Mit der Javascript API für MongoDB, wie erhalten Sie die ID des zuletzt eingefügten Objekts? d. h.Wie bekomme ich zuletzt die ID mit dem JS API?
obj = {a: 1, b: 2};
db.foo.insert(obj);
Wie bekomme ich die ID für obj?
Mit der Javascript API für MongoDB, wie erhalten Sie die ID des zuletzt eingefügten Objekts? d. h.Wie bekomme ich zuletzt die ID mit dem JS API?
obj = {a: 1, b: 2};
db.foo.insert(obj);
Wie bekomme ich die ID für obj?
Die Leute auf #mongodb waren hilfreich. Die JS-API unterstützt dies derzeit nicht, aber Sie können Ihre eigene ID verwenden. Um eine "normale" ID zu generieren, verwende _id: new ObjectId(). So das Beispiel in meiner Frage wäre:
id = new ObjectId();
obj = {a: 1, b: 2, _id: id};
db.foo.insert(obj);
nun die Mongo nativen js api dies unterstützt. Sie können die letzte id wie diese:
collection.insert(line, {w : 1}, function(err, inserted) {
inserted[0]._id
}
insert
setzt die _id Eigenschaft auf dem Objekt eingefügt, aber es sieht aus wie Sie warten, bis das Objekt zurückzukehren. Die beste Dokumentation ich dafür gefunden habe, ist (leider) im Quellcode:
https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js
ist nicht sicher jetzt veraltet? sollen wir nicht 'journal' oder' w' verwenden? – slf
Können Sie bitte auf die Dokumentation verweisen, wo wir dies überprüfen können? Außerdem, was genau sagst du, dass Einfügen die Zeile ändert, um die _id hinzuzufügen? Oder wird die Leitung an den Rückruf zurückgegeben? –
Sie haben das zweite Argument der Callback-Funktion vergessen, siehe [api docs] (https://github.com/mongodb/node-mongodb-native#insert). –
Wenn Sie die Daten wie folgt ein:
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);
});
Dann können Sie die _id wie diese greifen : console.log ("Dies ist die ID für die neue todo." + User._id);
Wenn Sie laufen
db.collection("venues").insert({name: "test3", FSid: "test3"}, function(err, ret) {
console.log(ret)
})
es gibt
{ result: { ok: 1, n: 1 },
ops: [ { name: 'test3', FSid: 'test3', _id: 57cb0a1162cecfe636df6fc1 } ],
insertedCount: 1,
insertedIds: [ 57cb0a1162cecfe636df6fc1 ] }
So können Sie Ihre IDs zusammen mit allen eingefügten Objekten durchkommen:
ret.ops[0]._id
oder gerade
ret.insertedIds[0]
Danke, dass du zurückkommst, um deine eigene Frage zu beantworten. Sehr geschätzt! –
in meinem speziellen Fall mit node-mongodb-native war es "message._id = new mongodb.ObjectID()' – slf