Python 在PyMongo中持久化对象之后,如何获取该对象的ID?
我有一个PyMongo新手问题:如果Python 在PyMongo中持久化对象之后,如何获取该对象的ID?,python,mongodb,pymongo,Python,Mongodb,Pymongo,我有一个PyMongo新手问题:如果collection是PyMongo,我用它来保存一个对象 obj = {'foo': 'bar'} collection.insert(obj) 然后MongoDB自动为obj生成一个\u id字段;一旦可以确认这一点 print obj 这会产生类似于 {'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')} collection.remove(obj['_id']) 我的问题是:我如何
collection
是PyMongo,我用它来保存一个对象
obj = {'foo': 'bar'}
collection.insert(obj)
然后MongoDB自动为obj
生成一个\u id
字段;一旦可以确认这一点
print obj
这会产生类似于
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
collection.remove(obj['_id'])
我的问题是:我如何将\u id
以我可以使用的方式收回
例如,如果我想从数据库中删除obj
,我会认为我想做如下操作
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
collection.remove(obj['_id'])
但是当我尝试这个时,我得到了信息
TypeError: 'ObjectId' object is unsubscriptable.
发生了什么事?你只需通过
obj
你只需通过删除一个dict,就像你做的插入一样。因此,要根据文档的\u id
值删除文档,请执行以下操作:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
insert返回插入文档的_id
并且remove将根据_id进行删除,因此请尝试以下操作:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
要从文档中删除对象,必须提及条件
正如您可以为文档指定“\u id……”
_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})
啊,我明白了。ObjectId包装器的用途是什么?它是一种特殊类型。它比字符串更紧凑,并且包含创建时的时间戳,您可以通过generation_time()访问它。ObjectId
可以从pymongo导入。ObjectId import ObjectId
供查找者使用。@T.Stone:谢谢。这让我发疯。