我有以下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
?
答案 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可能也有帮助。