如何获取同一字段在mongoDB中出现超过1次的文档列表?
How to get the list of docs that exist more than 1 time in mongoDB with the same field?
我想创建一个查询,以获取标题在 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 代码中做到这一点,但似乎在数据库级别上做到这一点更合理。
使用聚合框架,您可以按出现次数对 itemTitle
进行分组:
db.collection.aggregate([
{
$group: {
_id: "$itemTitle",
total: { $sum: 1 }
}
}
,{
$match: {
total: { $gt: 1 }
}
}
]);
我想创建一个查询,以获取标题在 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 代码中做到这一点,但似乎在数据库级别上做到这一点更合理。
使用聚合框架,您可以按出现次数对 itemTitle
进行分组:
db.collection.aggregate([
{
$group: {
_id: "$itemTitle",
total: { $sum: 1 }
}
}
,{
$match: {
total: { $gt: 1 }
}
}
]);