我有以下记录
[
{
_id : 1, nm : 1,
usr:[
{id : 1, ty : 'team'},
{id : 2, em : 'a'},
{id : 3, em : 'b'}
]
},
{
_id : 2, nm : 2,
usr:[
{id : 2, em : 'a'},
{id : 3, em : 'b'}
]
},
{
_id : 3, nm : 3,
usr:[
{id : 1, ty : 'team'},
{id : 3, em : 'b'}
]
},
{
_id : 4, nm : 4,
usr:[
{id : 3, em : 'b'}
]
}
]
-
我想数到
3
使用查询时
userAndTeam = [1, 2]
,即如果记录
usr.id as 1 or 2
获取那些记录。
-
我想数到
2
使用查询时
userAndTeam4 = [1, 4]
,即如果记录
usr.id as 1 or 4
获取那些记录。
我试过使用
$unwind
,使第一个案例的计数为4,如下所示
$展开
为第一条记录创建了3条记录,以下查询与其中2条记录匹配。
我尝试的查询:
var userAndTeam = [1, 2] //User id and team id. Record should match one of the ids.
var userAndTeam4 = [1, 4]
[{
$unwind: '$usr'
},
{
$project:{
'count-2' : {$cond: {
if: {$in : ['$usr.id',userAndTeam]},
then: 1,
else: 0
}},
'count-4' : {$cond: {
if: {$in : ['$usr.id',userAndTeam4]},
then: 1,
else: 0
}}
}
}
]
输出
:
预期的
对于id为2-“count-2”的用户:3
得到
对于id为2-“count-2”的用户:4
预期的
对于id为4-“count-4”的用户:2
得到
对于id为4-“count-4”的用户:2
有人能指导我解决这个问题并获得预期的计数吗?