在MongoDB中获取新创建的对象ID

时间:2018-09-05 08:32:56

标签: javascript node.js mongodb express

我有以下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 :(得分:1)

我认为您正在使用猫鼬包。如果您要为文档创建自定义_id,可以使用

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

并将其与您的员工对象一起传递。

更多信息,请转到here

答案 1 :(得分:1)

result object应该包含一个insertedId属性,该属性是驱动程序为插入操作生成的ObjectId

尝试登录result.insertedId来检查ID,并且还应该在ops属性中插入对象。

答案 2 :(得分:0)

_id字段一旦添加到集合中,便会添加到employeeObj中。

这来自docs

  

insertOne(文档,选项,回调)

插入单个文档   进入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);
});

This可能也有帮助。