mongodb 里 remove(None) 竟然是删库(#°Д°)

2018-08-13 02:39:30 +08:00
 JCZ2MkKb5S8ZX9pq

pymongo
手贱先取了个

old = db.find_one({conditions})

然后想更新 _id,就想删旧的再 insert,感觉旧的应该含 _id ,于是:

db.remove(old)
db.insert(new)

大意了 old 会取到 None,然后再 remove,竟然是删库……
还好损失不算太大,但第一次碰到,吐槽下。

7750 次点击
所在节点    MongoDB
31 条回复
JCZ2MkKb5S8ZX9pq
2018-08-13 16:34:07 +08:00
@yulitian888
@batter
想更新 _id,这样省掉一个标记更新时间的字段。
JCZ2MkKb5S8ZX9pq
2018-08-13 16:38:23 +08:00
@Perry
@BOYPT
pymongo 在大部分情况下,类型稍有不对就会报错的。如果它能考虑,区分一下 {} 和 None。
db.find() 返全部,db.find({}) 也可以理解(不设条件),但 db.find(None) 还是有点意外。
460881773
2018-08-13 17:58:47 +08:00
你如果你 没有条件,就是 删除全部。所以一定要加条件
Trumeet
2018-08-13 18:01:58 +08:00
然后再跑路?(雾
poorcai
2018-08-13 18:10:09 +08:00
同意六楼😂
wngwei
2018-08-13 18:54:35 +08:00
@glues mongodb 咋的了……
leafiy
2018-08-13 18:56:14 +08:00
还好不会 mongo,只用 mongoose
wdlth
2018-08-13 19:58:52 +08:00
论伪删除的重要性
glues
2018-08-13 20:21:57 +08:00
@wngwei 坑太多,很容易导致你跑路
wngwei
2018-08-14 08:19:17 +08:00
@glues 😂原来是这样
pabupa
2018-08-14 11:00:07 +08:00
🤣

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/479169

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX