我想创建一个查询,它将获取所有在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代码完成它,但似乎在数据库级别上这样做会更合理。
答案 0 :(得分:1)
使用聚合框架,您可以将itemTitle
分组为出现次数:
db.collection.aggregate([
{
$group: {
_id: "$itemTitle",
total: { $sum: 1 }
}
}
,{
$match: {
total: { $gt: 1 }
}
}
]);