如何在PyMongo中持久化对象后获取其ID?
我有一个关于PyMongo的新手问题:如果collection
是一个PyMongo的集合,我用它来保存一个对象,代码是
obj = {'foo': 'bar'}
collection.insert(obj)
那么MongoDB会自动为obj
生成一个_id
字段;你可以用下面的代码来确认这一点
print obj
这会返回类似这样的内容
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
我的问题是:我怎么才能把这个_id
拿出来,以便我可以使用它呢?
比如说,如果我想从数据库中删除obj
,我会想要做类似这样的事情
collection.remove(obj['_id'])
但是当我尝试这样做时,我收到的消息是
TypeError: 'ObjectId' object is unsubscriptable.
这是怎么回事呢?
4 个回答
1
你只需要传递 obj
就可以了。
12
你只需要把一个字典传给 remove
,就像你之前对 insert
做的那样。所以,如果你想根据文档的 _id
值来删除一个文档,可以这样做:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
3
插入操作会返回新插入文档的_id。
而删除操作是根据_id来删除的,所以你可以试试这样的代码:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)