2012-07-23 30 views

cevap

10

Bu mümkündür, ancak farklı bir komut gerektirir. findAndModify command'u arıyorsun.

Seçenekleri {query: ..., remove: true, new: false} olarak ayarlarsanız, tek bir belgeyi siler ve kaldırılan belgeyi döndürürsünüz.

bazı notlar:

  • new doğru bayrağının akıtmayı sağlamak, bir çok dilde bir anahtar kelimedir.
  • findAndModify yalnızca tek bir belge ile çalışacaktır. Bu, _id'u silmek için iyidir, ancak silinen kaldırmalar için iyi değildir. TRUE:
+1

'kaldırdığınızda gözardı' new' parametre değil midir? [node-mongodb-native docs] 'da buldu (https://github.com/mongodb/node-mongodb-native#find-and-modify) ve [here] (http://docs.mongodb.org/ el ile/başvuru/komut/findAndModify /) – balazs

+0

Oldukça müsaade edilmez. Bu cevapların yazılmasından yaklaşık 12 ay sonra bu dokümanlar yazılmıştır :) Bu, muhtemelen haklısınız, geri dönüş değerinin her iki şekilde de aynı olacağı düşünüldüğünde "yeni" işaretinin göz ardı edileceğini belirtti. –

+0

Kaldırma işleminden sonra durumla eşleşen dokümanların çeşitliliğine nasıl geçeceğiz? – thethakuri

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

Bu kod parçacığı, [bir açıklama dahil] sorunu çözebilirken (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based- cevaplar) gönderinin kalitesini iyileştirmeye gerçekten yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerilerinizin nedenini bilmeyebileceğini unutmayın. Lütfen kodunuzu açıklayıcı yorumlarla doldurmamaya çalışın, bu hem kodun hem de açıklamaların okunabilirliğini azaltır! – kayess