从新插入的文档中返回id - mongoDB

时间:2016-08-14 13:20:45

标签: javascript node.js mongodb

我需要将文档插入MongoDB集合并且返回新创建的文档的ID。 insertOne()方法(https://docs.mongodb.com/manual/tutorial/insert-documents/#db-collection-insertone)对此非常适合 - 但是我当前版本的Mongo仅限于insert()方法(上面链接的同一页面上的文档)。此方法不返回插入文档的object_id - save()方法也是如此。

collection.insert():

> db.urls.insert({"url":"https://www.google.com"})
WriteResult({ "nInserted" : 1 })

collection.save():

> db.urls.save({"url":"https://www.google.com"})
WriteResult({ "nInserted" : 1 })

我有更适合在这里使用的方法吗?

我在这篇文章中看到了一个可能的答案:MongoDB - Return id of inserted item,但是我不确定他们使用的save()方法是否与我所看到的相同,因为它似乎是作用于数据库对象而不是集合。我尝试按照顶部答案中的示例输入此代码:

db.urls.save(function(err,result) 
    { response = {id:result._id} 
    res.json(response) 
})

将此输入mongo shell后收到通用语法错误。

感谢您的回复!

1 个答案:

答案 0 :(得分:0)

所以我已经意识到我的问题更多是关于MongoDB的Node.js 驱动程序而不是MongoDB本身 - 根据我的SQL经验 - 如果我问的话我的问题不会那么重要如何在SQL Server中检索新插入记录的ID - 此任务更多是驱动程序的责任。查看可能的重复帖子中提供的Node.JS驱动程序的文档 - 这正是我正在寻找的答案:

http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#insert

关闭此文档,以下代码完全符合我的要求:

 db.urls.insert({"url":"https://www.google.com"}, function(err, docs) {
     console.log(docs);
 })