2017-08-09 64 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

相关问题