在数组中查找重复的条目

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} } } 
          ])

以上是关于在数组中查找重复的条目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中查找重复条目 [重复]

从数组中查找重复的 3D 顶点

检查数组中的重复条目,但仅返回重复的值 [重复]

如何使用 Propel ORM 在数据库中查找重复条目?

在列中查找重复条目 [重复]

在数据库中查找特定字段的重复条目