我需要将文档插入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后收到通用语法错误。
感谢您的回复!
答案 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);
})