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

2018 年 8 月 13 日
 JCZ2MkKb5S8ZX9pq

pymongo
手贱先取了个

old = db.find_one({conditions})

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

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

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

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

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

https://study.congcong.us/t/479169

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

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

© 2021 V2EX