最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何删除使用Mongodb或mongoose lib的最新10条记录?

运维笔记admin10浏览0评论

如何删除使用Mongodb或mongoose lib的最新10条记录?

如何删除使用Mongodb或mongoose lib的最新10条记录?

我正在使用此查询:

db.date.remove({
    _id:{ $not:{ $eq: ObjectId("570ba4f66931b8f21a8bf25f") }},
    date:{ $lt: outdated }
})

但它不能正常工作。我不需要给ids。

如何删除(删除)除最新的10条记录?

回答如下:

它可以通过迭代排序的集合列表来完成,你可以继续10或指定N记录,然后删除它作为db.collectionName.remove({_id:ObjectId(<IteratorID>)})

让我们看一下插入记录的细节,然后再删除它的概念证明

在mongo shell中将19条记录插入集合st2(仅用于检查脚本的正确性):

> for(var i =1; i<20;i++) { db.st2.insert({"a":i}) }
> 

一些记录看起来像:

> db.st2.find()
{ "_id" : ObjectId("5c62e71d6ddb127f4e87dfc4"), "a" : 1 }
{ "_id" : ObjectId("5c62e7476ddb127f4e87dfc5"), "a" : 2 }
...
...

只是迭代并打印将被删除的值[这仅用于脚本验证目的]

> var counter = 0;
> var allRecords = db.st2.find().sort({ "_id" : -1});
> var totalElements= allRecords.count()
> for(var i = 0; i<totalElements; i++) { if (i<=10) {allRecords.next();continue;} var currentRecord = allRecords.next(); print(currentRecord._id); print(currentRecord.a)};
ObjectId("5c62e7476ddb127f4e87dfcb")
8
ObjectId("5c62e7476ddb127f4e87dfca")
7
ObjectId("5c62e7476ddb127f4e87dfc9")
6
....
....

在使用id打印记录的位置,只需将其删除为db.collectionName.remove({_id:currentRecord._id}),请在下面进行检查:

> var allRecords = db.st2.find().sort({ "_id" : -1});
> 
> var totalElements= allRecords.count()
> totalElements
19
> for(var i = 0; i<totalElements; i++) { if (i<=10) {allRecords.next();continue;} var currentRecord = allRecords.next(); db.st2.remove({_id:currentRecord._id});};
WriteResult({ "nRemoved" : 1 })
> var totalElements= allRecords.count()
> totalElements
11
>

它删除了旧记录,只留下了11条记录。只需检查if条件,您就可以使用N记录或任何您想要的内容。

希望这会帮助您以更好的方式理解它,因为我试图用完整的细节来覆盖它,以便您或某人可以从这些示例中受益。

发布评论

评论列表(0)

  1. 暂无评论