我在做一个简单的插入到Mongo...
db.notes.insert({ title: "title", details: "note details"})
插入笔记文档后,我需要立即获得对象ID。插入返回的结果有一些关于连接和错误的基本信息,但没有文档和字段信息。我发现了一些关于upsert=true的update()函数的信息,我只是不确定这是否是正确的方法,我还没有尝试过。
zqdjd7g91#
MongoDB的一个很酷的地方是id是在客户端生成的。这意味着你甚至不需要问服务器id是什么,因为你已经告诉了它要保存什么。使用pymongo,插入的返回值将是对象id。
>>> import pymongo >>> collection = pymongo.Connection()['test']['tyler'] >>> _id = collection.insert({"name": "tyler"}) >>> print _id.inserted_id 4f0b2f55096f7622f6000000
ig9co6j12#
泰勒的答案对我不起作用。使用_id.inserted_id有效
>>> import pymongo >>> collection = pymongo.Connection()['test']['tyler'] >>> _id = collection.insert({"name": "tyler"}) >>> print(_id) <pymongo.results.InsertOneResult object at 0x0A7EABCD> >>> print(_id.inserted_id) 5acf02400000000968ba447f
n1bvdmb63#
最好使用insert_one()或insert_many()而不是insert(),这两个函数适用于较新的版本,您可以使用inserted_id来获取id。
myclient = pymongo.MongoClient("mongodb://localhost:27017/") myDB = myclient["myDB"] userTable = myDB["Users"] userDict={"name": "tyler"} _id = userTable.insert_one(userDict).inserted_id print(_id)
或者
result = userTable.insert_one(userDict) print(result.inserted_id) print(result.acknowledged)
如果需要使用insert(),则应该像下面这样编写
_id = userTable.insert(userDict) print(_id)
jm2pwxwz4#
较新的PyMongo版本会减少insert的值,应该使用insert_one或insert_many。这些函数返回pymongo.results.InsertOneResult或pymongo.results.InsertManyResult对象。对于这些对象,可以分别使用.inserted_id和.inserted_ids属性来获取插入的对象ID。有关insert_one和insert_many的详细信息,请参阅此链接;有关pymongo.results.InsertOneResult的详细信息,请参阅此链接。
insert
insert_one
insert_many
pymongo.results.InsertOneResult
pymongo.results.InsertManyResult
.inserted_id
.inserted_ids
svmlkihl5#
已更新;已删除以前的,因为它不正确
看起来您也可以使用db.notes.save(...)执行此操作,它在执行插入后返回_id。有关更多信息,请参阅:http://api.mongodb.org/python/current/api/pymongo/collection.html
db.notes.save(...)
kulphzqa6#
some_var = db.notes.insert({ title: "title", details: "note details"}) print(some_var.inserted_id)
8wigbo567#
只需将其赋值给某个变量:
someVar = db.notes.insert({ title: "title", details: "note details"})
58wvjzkj8#
要在Python中执行Insert后获取ID,只需执行以下操作:
doc = db.notes.insert({ title: "title", details: "note details"}) return str(doc.inserted_id) # This is to convert the ObjectID (type of doc.inserted_id into string)
8条答案
按热度按时间zqdjd7g91#
MongoDB的一个很酷的地方是id是在客户端生成的。
这意味着你甚至不需要问服务器id是什么,因为你已经告诉了它要保存什么。使用pymongo,插入的返回值将是对象id。
ig9co6j12#
泰勒的答案对我不起作用。使用_id.inserted_id有效
n1bvdmb63#
最好使用insert_one()或insert_many()而不是insert(),这两个函数适用于较新的版本,您可以使用inserted_id来获取id。
或者
如果需要使用insert(),则应该像下面这样编写
jm2pwxwz4#
较新的PyMongo版本会减少
insert
的值,应该使用insert_one
或insert_many
。这些函数返回pymongo.results.InsertOneResult
或pymongo.results.InsertManyResult
对象。对于这些对象,可以分别使用
.inserted_id
和.inserted_ids
属性来获取插入的对象ID。有关
insert_one
和insert_many
的详细信息,请参阅此链接;有关pymongo.results.InsertOneResult
的详细信息,请参阅此链接。svmlkihl5#
已更新;已删除以前的,因为它不正确
看起来您也可以使用
db.notes.save(...)
执行此操作,它在执行插入后返回_id。有关更多信息,请参阅:http://api.mongodb.org/python/current/api/pymongo/collection.html
kulphzqa6#
8wigbo567#
只需将其赋值给某个变量:
58wvjzkj8#
要在Python中执行Insert后获取ID,只需执行以下操作: