Tre*_*ham 4 python mongodb pymongo
我有一个PyMongo新手问题:如果collection是一个PyMongo 集合,我用它来保存一个对象
obj = {'foo': 'bar'}
collection.insert(obj)
Run Code Online (Sandbox Code Playgroud)
然后MongoDB自动生成一个_id字段obj; 一旦可以证实这一点
print obj
Run Code Online (Sandbox Code Playgroud)
产生类似的东西
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何_id以可以使用它的方式将其恢复?
例如,如果我想obj从数据库中删除,我会认为我想要做类似的事情
collection.remove(obj['_id'])
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,我收到了消息
TypeError: 'ObjectId' object is unsubscriptable.
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
kri*_*ina 12
你只需要传递remove一个字典,就像你一样insert.因此,要根据文档的_id值删除文档,请执行以下操作:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
Run Code Online (Sandbox Code Playgroud)
insert 返回插入文档的_id。
并删除将根据 _id 删除,因此请尝试以下操作:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
Run Code Online (Sandbox Code Playgroud)