pymongo
手贱先取了个
old = db.find_one({conditions})
然后想更新 _id,就想删旧的再 insert,感觉旧的应该含 _id ,于是:
db.remove(old) db.insert(new)
大意了 old 会取到 None,然后再 remove,竟然是删库……
还好损失不算太大,但第一次碰到,吐槽下。
![]() | 1 Perry 2018-08-13 02:58:59 +08:00 via iPhone 官方文档写的很清楚: To delete all documents in a collection, pass an empty document ({}). |
![]() | 2 Trim21 2018-08-13 05:55:28 +08:00 via Android 一直在用 delete_one, 而且这种情况一直写成{_id:old['_id']}, 从来不把变量直接传进去… |
3 mooncakejs 2018-08-13 06:17:28 +08:00 via iPhone ![]() sql 不加 where? |
![]() | 4 vela 2018-08-13 08:09:22 +08:00 又一次触发了吃瓜系人民群众喜闻乐见的事件…… 2333 |
![]() | 5 yulitian888 2018-08-13 08:11:01 +08:00 做这种操作难道不是应该用 upsert:true 参数的?? |
![]() | 6 reus 2018-08-13 08:33:31 +08:00 11 虽然说楼主不看文档算有错 但当初设计这种接口的人就是蠢到爆炸 |
![]() | 7 g079708 2018-08-13 08:40:12 +08:00 via iPhone 感谢入坑提醒 |
![]() | 8 DonaidTrump 2018-08-13 08:46:53 +08:00 via iPhone ![]() @reus #6 remove 就是删除,参数是条件,你删除不加条件跟 SQL 删除不加 where 有什么区别 |
![]() | 9 lrh3321 2018-08-13 08:47:47 +08:00 好蠢,还好我只在测试环境下删记录 |
![]() | 11 zhicheng 2018-08-13 09:42:21 +08:00 via iPhone SQL 的 WHERE 参数里传 null 并不会删除全部数据,至少大多数情况不会。 你们觉得是数据库 Model 里生成不带 WHERE 的 DELETE 容易出现,还是程序里有个变量变成 null 容易出现? |
![]() | 12 reus 2018-08-13 09:53:54 +08:00 @tulongtou 我错了,SQL 的 DELETE 传了 id = null,一条数据都不会删除,SQL 没有 mongodb 这么蠢。这里根本不是不加条件,而是 id = old,而 old 为 null,也就是 id = null。 |
![]() | 14 glues 2018-08-13 11:44:53 +08:00 mongodb 你也敢用? |
16 ilaipi 2018-08-13 12:56:53 +08:00 奇怪了,都没有人觉得 删集合和删库不一个概念? |
![]() | 17 noNOno 2018-08-13 14:19:58 +08:00 太危险了. 感觉这接口开发者对 null 的理解有点弱. |
18 BOYPT 2018-08-13 14:26:33 +08:00 尽然.find()返回全库,.remove()删除全库挺合理的。 |
19 batter 2018-08-13 15:27:52 +08:00 只 insert,update,不 delete,remove |
![]() | 20 JCZ2MkKb5S8ZX9pq OP @ilaipi 对的 我说笼统了 是删了个 collection |
![]() | 21 JCZ2MkKb5S8ZX9pq OP |
![]() | 22 JCZ2MkKb5S8ZX9pq OP |
![]() | 23 460881773 2018-08-13 17:58:47 +08:00 你如果你 没有条件,就是 删除全部。所以一定要加条件 |
![]() | 24 Trumeet 2018-08-13 18:01:58 +08:00 via Android 然后再跑路?(雾 |
![]() | 25 poorcai 2018-08-13 18:10:09 +08:00 via iPhone 同意六楼 |
![]() | 27 leafiy 2018-08-13 18:56:14 +08:00 还好不会 mongo,只用 mongoose |
![]() | 28 wdlth 2018-08-13 19:58:52 +08:00 via Android 论伪删除的重要性 |
![]() | 31 pabupa 2018-08-14 11:00:07 +08:00 |