mongoDB通過_id刪除doc
阿新 • • 發佈:2018-11-03
轉載: 點選檢視原文
做專案遇到一個需求,需要根據mongodb資料記錄裡面的_id欄位刪除相應的docs,實際使用時發現直接如下使用
db.collection('infochanges').remove({"_id":idvalue}).then(function(){})
會報錯,這裡需要將idvalue轉換成mongodb預設的_id欄位的objectid型別
於是,引入模組(mongoDB3.6)
var ObjectId = require('mongodb').ObjectID;//Work
其他的mongoDB版本可嘗試
var ObjectId = require('mongodb').ObjectId;//Work
引用完成之後
db.collection('infochanges').remove({"_id":{"_id":ObjectId(idvalue)}).then(function(){})
此時,你會發現並不能通過上述操作成功刪除資料,而是報錯:
TypeError:Cannot convert undefined or null to object
重點:請使用findAndRemove
db.collection('infochanges').findAndRemove({"_id":ObjectId(index)}).then(function(){})
通過_id刪除docs要用findAndRemove,remove不起作用(3.6版本)
上面給的寫法,也可以省略 .then()。 直接通過傳參的方式。 都是回撥函式,等待非同步執行完才執行。
例:
db.collection('infochanges').findAndRemove({"_id":ObjectId(index)}), function(){})
【注】 findAndRemove 現在也被棄用了,被更換為findOneAndDelete
希望能給各位遇到同樣問題的道友一些幫助,也請各位大神多多指點,輕噴。