所以我或多或少地拥有这个集合,时间,如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个复制。)
我的直觉告诉我这是一种聚合类型的东西。但我无法弄明白。有什么想法吗?
提前致谢! 英格
答案 0 :(得分:1)
逻辑很简单:
$group
title
和copy
的记录。count
运算符在该组中记录总数的$sum
。count value > 1
的群组是我们想要的群组。$project
title
这些群组。这是管道:
db.collection.aggregate([
{$group:{"_id":{"title":"$title","copy":"$copy"},"count":{$sum:1},"title":{$first:"$title"}}},
{$match:{"count":{$gt:1}}},
{$project:{"title":1,"_id":0}}
])