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