Как получить последний вставленный идентификатор с помощью API JS? - PullRequest
12 голосов
/ 31 августа 2010

Используя javascript api для MongoDB, как вы получаете идентификатор последнего вставленного объекта? т.е.

obj = {a: 1, b: 2};
db.foo.insert(obj);

Как мне получить идентификатор для obj?

Ответы [ 4 ]

24 голосов
/ 31 августа 2010

Люди на #mongodb были полезны.JS API в настоящее время не поддерживает это, но вы можете использовать свой собственный идентификатор.Чтобы сгенерировать «нормальный» идентификатор, выполните _id: new ObjectId ().Таким образом, пример в моем вопросе будет:

id = new ObjectId();
obj = {a: 1, b: 2, _id: id};
db.foo.insert(obj);
1 голос
/ 03 сентября 2016

Если вы запустите

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 ] }

Таким образом, вы можете получить свои идентификаторы вместе со всеми вставленными объектами через:

ret.ops[0]._id

или прямой

ret.insertedIds[0]
0 голосов
/ 11 сентября 2013

Если вы вставите данные следующим образом:

    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 («это идентификатор новой задачи. + User._id);

0 голосов
/ 04 апреля 2013

Теперь native Mongo native js api поддерживает это.Вы можете получить последний идентификатор следующим образом:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...