2012-07-23 92 views

回答

10

這是可能的,但它需要一個不同的命令。您正在尋找findAndModify command

如果您將選項設置爲{query: ..., remove: true, new: false},您將刪除單個文檔並返回已刪除的文檔。

一些注意事項

  • new是在許多語言中的關鍵字,請確保您正確包裝標誌的文本。
  • findAndModify只能使用單個文檔。這適用於刪除_id,但不適用於範圍刪除。
+1

當'remove:true'時忽略'new'參數嗎?在[node-mongodb-native docs]中找到它(https://github.com/mongodb/node-mongodb-native#find-and-modify)和[here](http://docs.mongodb.org/手動/參考/命令/ findAndModify /) – balazs 2014-01-11 19:45:53

+0

很可能它被忽略。這些文檔是在寫出這個答案後大約12個月寫出來的。這表明,你可能是對的,考慮到返回值是相同的,「new」標誌可能會被忽略。 – 2014-01-12 02:55:29

+0

如何去除返回符合條件的文檔的範圍? – thethakuri 2016-06-04 07:03:26

2
db.collection('mycollection').findOneAndDelete({ 
    id: '123456' 
}, function (error, response) { 
    response.value;// returns the deleted object, but no longer exists in the database 
}); 
+4

儘管這段代碼可以解決這個問題,[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-答案)確實有助於提高發布的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess 2016-11-23 10:50:28