【问题标题】:Mongo remove last documentsMongo 删除最后的文件
【发布时间】:2015-02-22 02:44:21
【问题描述】:

我想知道如何删除,例如,我的集合中插入的最后 100 个文档。

从shell怎么可能?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您应该能够使用_id 对最后插入的内容进行排序,如答案here 中所述:

    db.coll.find().sort({_id:-1}).limit(100);
    

    虽然不支持 looks like 对标准 mongo 删除操作使用限制,因此您可以使用类似的方法删除 100 个文档:

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

    有关findAndModify 的更多信息,请参阅docs

    【讨论】:

    • 这个答案有一些问题。 1)你假设他的 _id 值是单调递增的。但如果它们是 2) 你建议运行一个循环 100 次而不是只执行一个删除语句 db.coll.remove({_id:{$gte:}
    • 我指出的答案表明 _id 将返回最新的项目:“如果您使用自动创建的 _id 字段,它会嵌入一个日期......所以您可以使用它来订购经过”。在某些情况下(例如,当 db 被分片时)这会不准确吗?无论如何,我当然同意单次通话会更有效率——谢谢!
    • 他们指出 如果您使用 _id - 但不要忘记人们可以提供他们自己的 _id 值,该值可能以不同的方式分布,并且 _id 是在客户端生成的 -如果他们有多个客户,他们的一些时钟可能会关闭(!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2021-09-11
    • 2012-03-31
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多