MongoDB:返回具有多个副本的标题

时间:2014-11-11 00:15:41

标签: mongodb

所以我或多或少地拥有这个集合,时间,如1800:

uniqueid1, Title 1, Copy 1
uniqueid2, Title 1, Copy 1
uniqueid3, Title 2, Copy 1
uniqueid4, Title 2, Copy 2
uniqueid5, Title 3, Copy 1
uniqueid6, Title 4, Copy 1

(如果不明显,“uniqueid”字段是主键。)

我想返回具有多个副本1的所有标题的结果。所以基本上,从上面的数据集返回的唯一标题是标题1(因为标题2具有不同的副本编号和标题3和标题4每个只有1个复制。)

我的直觉告诉我这是一种聚合类型的东西。但我无法弄明白。有什么想法吗?

提前致谢! 英格

1 个答案:

答案 0 :(得分:1)

逻辑很简单:

  1. $group titlecopy的记录。
  2. 对于标题和副本(一组)的每个独特组合,我们得到 使用count运算符在该组中记录总数的$sum
  3. count value > 1的群组是我们想要的群组。
  4. 然后我们$project title这些群组。
  5. 这是管道:

     db.collection.aggregate([
     {$group:{"_id":{"title":"$title","copy":"$copy"},"count":{$sum:1},"title":{$first:"$title"}}},
     {$match:{"count":{$gt:1}}},
     {$project:{"title":1,"_id":0}}
     ])