gpt4 book ai didi

MongoDB 按计数分组删除记录

转载 作者:可可西里 更新时间:2023-11-01 09:43:23 25 4
gpt4 key购买 nike

我有很多包含重复地址的记录。基本上,我想删除那些重复地址数超过 50 但少于 300 的记录。

这是我获取要删除的记录的方式:

db.directories.aggregate( [
{ $group: { _id: { address: "$address" }, total: { $sum: 1 } } },
{ $match: { total: { $gt: 50, $lt: 300 } } },
{ $sort: { total: -1 } }
], { allowDiskUse: true });

最佳答案

可以使用游标方法 forEach() 迭代从 aggregate() 返回的游标 方法并使用 remove() 删除文档方法,如下例所示:

var pipeline = [
{ $group: { _id: { address: "$address" }, total: { $sum: 1 } } },
{ $match: { total: { $gt: 50, $lt: 300 } } },
{ $sort: { total: -1 } }
];
var options = { allowDiskUse: true };
db.directories.aggregate(pipeline, options).forEach(function (doc){
var query = {"address": doc._id.address};
db.directories.remove(query);
});

关于MongoDB 按计数分组删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com