我做一个简单的插入到蒙戈...如何在插入后获取PyMongo中的对象ID?注释文档插入
db.notes.insert({ title: "title", details: "note details"})
后,我需要立即获取对象ID。从插入返回的结果有一些关于连接和错误的基本信息,但没有文档和字段信息。
我发现有关使用upsert = true的update()函数的一些信息,我只是不确定如果这是正确的路要走,我还没有尝试过。
我做一个简单的插入到蒙戈...如何在插入后获取PyMongo中的对象ID?注释文档插入
db.notes.insert({ title: "title", details: "note details"})
后,我需要立即获取对象ID。从插入返回的结果有一些关于连接和错误的基本信息,但没有文档和字段信息。
我发现有关使用upsert = true的update()函数的一些信息,我只是不确定如果这是正确的路要走,我还没有尝试过。
更新;删除以前,因为它不正确
看起来你也可以做db.notes.save(...)
,它会执行插入后返回_id。
详情参见: http://api.mongodb.org/python/current/api/pymongo/collection.html
一个关于MongoDB的很酷的事情是,IDS生成客户端。
这意味着你甚至不必问服务器什么是ID,因为你告诉它它首先要保存什么。使用pymongo插入的返回值将是对象ID。检查出来:
>>> import pymongo
>>> collection = pymongo.Connection()['test']['tyler']
>>> _id = collection.insert({"name": "tyler"})
>>> print _id
4f0b2f55096f7622f6000000
这需要被标记为正确的。谢谢! – 2013-02-08 22:02:53
没问题Shane – 2013-02-08 22:44:25
好的答案,但我建议使用'_id'或'id_'作为名称。我不在python中使用'id',但是不使用内置函数名称可能是一个好习惯。 – beardc 2013-02-23 05:03:28
对不起,有点困惑的pymongo - 更新的答案应该工作。 – 2012-01-09 04:34:29
请注意,根据D是否有_id字段,插入(D)或更新(D._id,D),保存(D)实际上是驱动程序方便的方法(如果不插入,则更新if它) – 2012-01-09 12:52:04