2016-01-09 23 views
0

我想创建一个查询,将获得所有在mongoDB中存在超过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" 
    } 

这意味着用相同的标题中存在的记录列表的查询DB超过1次。 我可以在Java代码中完成它,但似乎在数据库级别执行它会更合理。

+0

您的查询结果有不同itemTitles – JamesB

+0

@JamesB这就是真正的对象,这是我想从数据库中获取 – USer22999299

回答

1

使用聚合框架,您可以通过OCCURENCES数量组itemTitle

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