查找数组中的重复条目
问题描述:
我意外地导入了一些文件,现在它们有重复的“slugs”。查找数组中的重复条目
我与mongoid
工作,所以我的模型是这样的:
类为MyModel 字段:姓名,字符串#“我对象名字” 领域:蛞蝓,阵列#[“我的对象名称” ] 结束
其中slugs持有一串字符串。但有些是重复的,不应该是。
如何建立一个查询来搜索数组中的重复项?
这是我的实际做法,但其结果捏着我的条目,这是不正确
results = MyModel.unscoped.collection.aggregate([
{"$match" => {"count" => {"$gt" => 1}}},
{'$group' => {"_id" => "$slugs",
"count" => {"$sum" => 1}}}])
有人建议我的查询?
答
您可以尝试下面的聚合。
您需要在$group
阶段后$match
和$unwind
slugs
对每个slug元素应用分组。
MyModel.unscoped.collection.aggregate([
{$unwind => "$slugs"},
{$group => {_id => "$slugs",
count => {"$sum" => 1}}},
{$match => {count => {"$gt" => 1}}}
])
这会给你所有重复的slug元素在整个集合中。
答
我准确的查询看起来是这样的:
results = MyModel.unscoped.collection.aggregate(
[{"$group" =>
{_id: {"_slugs" => "$_slugs"},
recordIds: {"$addToSet" => "$_id"},
count: {"$sum" => 1}
}
},
{"$match" => {count: {"$gt" => 1} } }
])