2013-06-22 134 views

回答

14

您应该能够使用_id进行排序最后插入,如答案here概述:

db.coll.find().sort({_id:-1}).limit(100); 
使用的标准蒙戈删除操作限制

looks like不支持,虽然,所以你可以使用这样的删除100个文档:

for(i=0;i<100;i++) { 
    db.coll.findAndModify({query :{}, sort: {"_id" : -1}, remove:true}) 
} 

更多关于findAndModifydocs

+5

这个答案有一些问题。 1)你假设他的_id值是单调递增的。但如果他们是2)你建议运行循环100次,而不是只做一个删除语句db.coll.remove({_ id:{$ gte:} –

+1

我指出的答案建议_id将返回最近的项目:“如果您使用自动创建的_id字段,它会嵌入一个日期...因此您可以使用它来排序”。在某些情况下这样做会不准确(例如当数据库是分片时)? 无论如何,我一定会同意,单个电话会更有效率 - 谢谢! – bcm360

+2

他们指出*如果您使用_id - 但不要忘记人们可以提供自己的_id值可能以不同方式分配,并且客户端上也会生成_id - 如果它们有多个客户端,某些时钟*可能会关闭(!) –