Как вставить документ в mongodb, используя mongoose и получить сгенерированный идентификатор?
Я использую мангуст, чтобы управлять mongodb. Теперь для тестирования я хочу вставить некоторые данные в mongodb с помощью собственного соединения.
Но вопрос в том, как получить сгенерированный идентификатор после вставки?
Я пробовал:
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
var conn = mongoose.connection;
var user = {
a: 'abc'
};
conn.collection('aaa').insert(user);
console.log('User:');
console.log(user);
Но он печатает:
{ a: 'abc' }
Не существует поля _id
.
Ответы
Ответ 1
Вы можете создать _id
самостоятельно и отправить его в базу данных.
var ObjectID = require('mongodb').ObjectID;
var user = {
a: 'abc',
_id: new ObjectID()
};
conn.collection('aaa').insert(user);
Это одна из моих любимых особенностей MongoDB. Если вам нужно создать несколько объектов, которые связаны друг с другом, вам не нужно совершать многочисленные круглые поездки между app и db. Вы можете создать все идентификаторы в приложении, а затем просто вставить все.
Ответ 2
Если вы используете .save, вы получите обратно _id в функции обратного вызова.
var user = new User({
a: 'abc'
});
user.save(function (err, results) {
console.log(results._id);
});
Ответ 3
Вы можете использовать метод Update с параметром upsert: true
aaa.update({
a : 'abc'
}, {
a : 'abc'
}, {
upsert: true
});