2017-08-09 62 views
1

我正試圖找到一個最佳的方式來刪除查找查詢返回的除N以外的所有文檔。如何通過查詢保留前N個文檔並刪除mongoDB中的所有其他文檔?

我們現在正在做的是獲取所有文檔ID的排序和跳過N。然後開始刪除查詢爲{id: {$in: idsList}}

1. model.find(findQuery).sort({_id:-1}).skip(N) -> collecting all ids from this query(idsList) 

2. model.remove({_id:{'$in':idsList}}) 

有沒有什麼辦法以最佳方式使用單個查詢來做到這一點?

回答

0

試着做相反的事情。

1. idsList = model.find(findQuery).sort({_id:-1}).limit(N) 


2. model.remove({_id:{'$nin':idsList}}) 
+0

我們不能說這是最好的,我們可以嗎?如果N更高(比跳過),另一種方式是最好的。 – RaR

相關問題