如何使用相同的字段获取mongoDB中存在多次的文档列表?

时间:2016-01-09 09:45:13

标签: mongodb mongodb-query mongodb-shell

我想创建一个查询,它将获取所有在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"
    }

这意味着DB中存在的具有相同标题的记录超过1次。 我可以用Java代码完成它,但似乎在数据库级别上这样做会更合理。

1 个答案:

答案 0 :(得分:1)

使用聚合框架,您可以将itemTitle分组为出现次数:

db.collection.aggregate([
    {
        $group: {
            _id: "$itemTitle",
            total: { $sum: 1 }
        }
    }
    ,{
        $match: {
            total: { $gt: 1 }
        }
    }
]);