Получить вновь созданный идентификатор объекта в MongoDB - PullRequest
0 голосов
/ 05 сентября 2018

У меня следующий запрос MongoDB, и я использую драйвер mongodb node.js для подключения:

db.collection('employee').insertOne(employeeObj).then(result => {
    console.log(result);
    res.send(result);
}).catch(function (err) {
    console.log("ERROR: ", err);
});

Исходя из вышесказанного, я хотел бы получить Object _Id вновь созданного сотрудника, но когда я консоль записываю в журнал результат, я получаю:

Object { n: 1, ok: 1 }

Используя приведенный выше запрос, как я могу также включить новый _id, только что созданный в возвращаемый результат?

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Я полагаю, вы используете пакет Мангуста. Если вы хотите создать собственный _id для вашего документа, вы можете использовать

var newId = new mongoose.mongo.ObjectId('56cb91bdc3464f14678934ca');

и передайте его вместе с объектом сотрудника.

подробнее ... здесь .

0 голосов
/ 05 сентября 2018

Объект результата должен содержать свойство insertedId, которое генерируется драйвером ObjectId для операции вставки.

Попробуйте войти result.insertedId, чтобы проверить идентификатор, а также у вас должен быть вставленный объект в свойстве ops.

0 голосов
/ 05 сентября 2018

Поле _id будет добавлено к employeeObj после его добавления в коллекцию.

Это из документов :

insertOne (doc, options, callback)

Вставляет один документ в MongoDB. Если переданные документы не содержат поле _id, одно будет добавлен к каждому документу, пропущенному водителем, мутируя документ. Это поведение можно изменить, установив флаг forceServerObjectId.

Просто измените код на:

db.collection('employee').insertOne(employee).then(result => {
    console.log(employee._id);
    res.send({employee, result});
}).catch(function (err) {
    console.log("ERROR: ", err);
});

Это также может быть полезным.

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