mongodb - 如何在mongodb中删除N个文档

在我的收藏中,文档包含状态和时间戳等键。当我想查找最新的十个文档时,我会编写以下查询

db.collectionsname.find().sort({"timestamp"-1}).limit(10)

这个查询给了我想要的结果,但是当我想删除最近的十个文档时,我正在编写以下查询

db.collectionsname.remove({"status":0},10).sort({"timestamp":-1})

但它显示以下错误 TypeError: 无法调用未定义的方法“排序” 我又写了如下相同的查询 db.collectionsname.remove({"status":0},10) 它只删除一个文档。那么如何编写一个删除十个最新文档并按时间戳排序的查询呢?

最佳答案

使用 removefindAndModify 时不能设置限制。因此,如果您想精确限制删除的文档数量,您需要分两步完成。

db.collectionName.find({}, {_id : 1})
    .limit(100)
    .sort({timestamp:-1})
    .toArray()
    .map(function(doc) { return doc._id; });  // Pull out just the _ids

然后将返回的_ids传递给remove方法:

db.collectionName.remove({_id: {$in: removeIdsArray}})

仅供引用:您不能从有上限的集合中删除文档。

https://stackoverflow.com/questions/19065615/

相关文章:

mongodb - Mongoose中的级联样式删除

java - java中使用mongodb的createIndex()和ensureIndex()的

node.js - 如何使用 Mongoose findOne

javascript - .save() 和使用 update() 之间的 Mongoose 区别

mongodb - "db.createUser is not a function"和 "pass

mongodb - 如何列出 mongo shell 中的所有用户?

ruby-on-rails - 批量查找 mongoDB 记录(使用 mongoid ruby​​

regex - Node.js 和 Mongoose 正则表达式查询多个字段

json - 从数据库存储和查询 JSON

mongodb - Cassandra、Membase、Hadoop、MongoDB、RDBMS等如