按_id删除文档不起作用[重复]
Posted
技术标签:
【中文标题】按_id删除文档不起作用[重复]【英文标题】:Delete document by _id doesn't work [duplicate] 【发布时间】:2018-10-27 22:44:19 【问题描述】:我有一个在 MongoDB 中存储数据的脚本,我想用另一个脚本删除文档。 存储在我的数据库中的每个文档都采用这种格式:
"k1526346000_500":
"r45037": "C": "1", "V": "1000", "L": "1181", "D": "75",
"r21542": "C": "2", "V": "94527", "L": "105", "D": "94",
etc...
我想做的是通过传递密钥(在本例中为 k1526346000_500)来删除文档 当我尝试这样做时:
db.collection.delete_one(_id:key)
其中key对应k1526346000_500,我有错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "fetch.py", line 38, in run
read(self.mongo).test(key)
File "/var/python/lib/script.py", line 121, in test
db.collection.delete_one(_id:key)
NameError: global name '_id' is not defined
但是,文档已正确删除。 这对我来说是个问题,因为错误退出脚本,我必须让它循环运行。
你知道我怎样才能让它工作吗?
谢谢 ;)
编辑:当我转储该文档时,我得到了这个结果:
"_id" : ObjectId("5afda3efb2031025afe0d32e"), "k1526346000_500" : "r4" : "C" : "1", "V" : "447616", "L" : "1", "D" : "4"
所以这绝对不是在这里使用的“_id”,但我不知道如何捕捉这个字段:(
【问题讨论】:
首先我生成了像这样的所有行:"r45037": "C":.......然后我创建了一个这样的字典:dict['k1526346000_500'] = rows where rows 已经是一个字典。所以我假设当我创建那个密钥时,它直接进入'_id'不是吗?编辑:如果它不是“_id”字段,它可能是什么? 你说得对,结果如下: "_id" : ObjectId("5afda3efb2031025afe0d32e"), "k1526346000_500" : "r4" : "C" : "1", "V ":"447616","L":"1","D":"4","r5":"C":"1","V":"398949","L":"1 ”,“D”:“5”,“r6”:“C”:“1”,“V”:“9276983”,“L”:“1”,“D”:“6”,“ r7”:“C”:“1”,“V”:“1544083”,“L”:“1”,“D”:“7”,“r0”:“C”:“1”, “V”:“471757766”,“L”:“1”,“D”:“0”,“r1”: “C”:“1”,“V”:“3473966”,“L”: “1”,“D”:“1”,“r2”:“C”:“1”,“V”:“3396966”,“L”:“1”,“D”:“2”那么我怎么称呼它呢? 【参考方案1】:Python 不是 javascript。需要引用的键:
db.collection.delete_one("_id": key)
【讨论】:
感谢您的回答!我没说但是我测试了这个,我没有任何错误,但是文档没有被删除【参考方案2】:您实际上是在指定集合的名称吗?例如,如果你的收藏名为tree
,你需要说
db.tree.deleteOne(_id:key)
还要确保您连接到正确的数据库 - 例如,use forest
。
【讨论】:
嗨!感谢您的回答。我实际上指定了集合的名称,我只是在这里替换它。我在尝试删除之前做了几个动作,所有这些动作都有效,所以传递的参数是正确的!【参考方案3】:"k1526346000_500"
是文档中字段的名称,而不是文档的 _id
值。因此,假设这是一个唯一的键名,您可以通过使用 $exists
运算符搜索该文档来删除该文档:
db.collection.delete_one(key: "$exists": True)
【讨论】:
以上是关于按_id删除文档不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章