Подтвердить что ты не робот

Как вставить документ в 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.

4b9b3361

Ответ 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
});