您好我会尝试给出一个我想要实现的简单示例,我尝试使用聚合管道并且区别但我有点迷失
我有以下记录
item1 - A : "xxxx", U : "1111"
item2 - A : "xxxx", U : "2222"
item3 - A : "bbbb", U : "1111"
item4 - A : "bbbb", U : "3333"
item4 - A : "xxxx", U : "3333"
我正在尝试编写一个查询,它会给我一个唯一的U计数,其中U有match A = "xxxx" and A = "bbbb"
所以上面的情况计数是2,因为只有两个用户有bbbb and xxxx
的记录
答案 0 :(得分:1)
使用聚合怎么样? 原始数据:
> db.items.find({}, {_id: 0})
{ "A" : "xxxx", "U" : "1111" }
{ "A" : "xxxx", "U" : "2222" }
{ "A" : "bbbb", "U" : "1111" }
{ "A" : "bbbb", "U" : "3333" }
{ "A" : "xxxx", "U" : "3333" }
汇总查询:
> db.items.aggregate([{$group: {_id: '$U', alist: {$push: '$A'}}}, {$match: {alist: {$all: ['bbbb', 'xxxx']}}}])
{ "_id" : "3333", "alist" : [ "bbbb", "xxxx" ] }
{ "_id" : "1111", "alist" : [ "xxxx", "bbbb" ] }