在数组中查找重复的条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在数组中查找重复的条目相关的知识,希望对你有一定的参考价值。
我意外地导入了一些文件,现在有一些重复的“slu”“。
我正在使用mongoid
,所以我的模型看起来像这样:
class MyModel field:name,String#“My Object name”字段:slugs,Array#[“my-object-name”] end
slugs包含一串字符串。但有些是重复的,不应该是重复的。
如何构建查询以搜索数组中的重复项?
这是我的实际方法,但其结果包含我的所有条目,但事实并非如此
results = MyModel.unscoped.collection.aggregate([
{"$match" => {"count" => {"$gt" => 1}}},
{'$group' => {"_id" => "$slugs",
"count" => {"$sum" => 1}}}])
有人可以建议我查询吗?
答案
您可以尝试以下聚合。
在$match
阶段和$group
$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} } }
])
以上是关于在数组中查找重复的条目的主要内容,如果未能解决你的问题,请参考以下文章