使用MongoDB的javascript api,如何获取最后插入的对象的ID?即。
obj = {a: 1, b: 2};
db.foo.insert(obj);
如何获取obj的ID?
答案 0 :(得分:24)
#mongodb上的人们很有帮助。 JS API目前不支持此功能,但您可以使用自己的ID。要生成“普通”id,请执行_id:new ObjectId()。所以我的问题中的例子是:
id = new ObjectId();
obj = {a: 1, b: 2, _id: id};
db.foo.insert(obj);
答案 1 :(得分:1)
如果你跑
db.collection("venues").insert( {name: "test3", FSid: "test3"}, function( err, ret) {
console.log( ret )
})
它返回
{ result: { ok: 1, n: 1 },
ops: [ { name: 'test3', FSid: 'test3', _id: 57cb0a1162cecfe636df6fc1 } ],
insertedCount: 1,
insertedIds: [ 57cb0a1162cecfe636df6fc1 ] }
因此,您可以通过以下方式获取所有插入对象的ID:
ret.ops[0]._id
或直接
ret.insertedIds[0]
答案 2 :(得分:0)
现在,mongo native js api支持这个。你可以得到这样的最后一个id:
collection.insert(line, {w : 1}, function(err, inserted) {
inserted[0]._id
}
insert
在插入的对象上设置_id属性,但看起来你必须等待对象返回。我发现的最好的文档(不幸的是)在源代码中:
https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js
答案 3 :(得分:0)
如果您插入如下数据:
var temptodo = new User({
title: data.todo.text,
email: socket.handshake.email,
created_at: Date.now(),
completed: false,
sid: socket.handshake.sid
});
temptodo.save( function(error, User){
console.log("this is the id for the new todo. "+User._id);
console.log('Todo saved in database with sid: '+socket.handshake.sid);
});
然后你可以像这样抓取_id:console.log(“这是新todo的id。”+ User._id);