0

我想创建一个查询,该查询将获取在 mongoDB 中存在超过 1 次的标题的所有文档。

可以说这是我的文档:

{
  "itemID" : "AAN88998JJCA",
  "itemTitle" : "AAAA
}

{
  "itemID" : "AAN8BB98JJCA",
  "itemTitle" : "AAAA"
}

{
  "itemID" : "A5N84998JJ3A",
  "itemTitle" : "AACC"
}

{
  "itemID" : "A2N81998JJC1",
  "itemTitle" : "AACC"
}

{
  "itemID" : "A2N81998JJC1",
  "itemTitle" : "BBBB"
}

我想设置一个查询,该查询将生成一个列表

 {
      "itemID" : "AAN88998JJCA",
      "itemTitle" : "AAAA
    }

    {
      "itemID" : "AAN8BB98JJCA",
      "itemTitle" : "AAAA"
    }

    {
      "itemID" : "A5N84998JJ3A",
      "itemTitle" : "AACC"
    }

    {
      "itemID" : "A2N81998JJC1",
      "itemTitle" : "AACC"
    }

这意味着具有相同标题的记录在数据库中存在超过 1 次。我可以在 Java 代码中执行此操作,但似乎在数据库级别执行此操作更合理。

4

1 回答 1

1

使用聚合框架,您可以itemTitle按出现次数进行分组:

db.collection.aggregate([
    {
        $group: {
            _id: "$itemTitle",
            total: { $sum: 1 }
        }
    }
    ,{
        $match: {
            total: { $gt: 1 }
        }
    }
]);
于 2016-01-09T10:28:19.437 回答