2016-08-14 68 views
0

我需要將文檔插入到MongoDB集合中返回新創建的文檔的ID。 insertOne()方法(https://docs.mongodb.com/manual/tutorial/insert-documents/#db-collection-insertone)對此非常適用 - 但是我的當前版本的Mongo僅限於insert()方法(上面鏈接的同一頁面上的文檔)。此方法不會返回插入文檔的object_id - 與save()方法相同。從新插入的文檔返回id - mongoDB

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()方法與我正在使用的save()方法是否一樣,因爲它似乎是在數據庫上進行操作對象與集合。我試着按照上面的答案的例子與輸入此代碼:

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

進入蒙戈外殼此之後收到的通用語法錯誤。

感謝您的回覆!

回答

0

所以我已經意識到我的問題是更多關於MongoDB的,而不是本身的MongoDB Node.js的司機 - 從我的經驗與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); 
})