这是我的问题:在我的MongoDB数据库中,我有一个包含如下消息的集合:
{
'id': 1,
'message': 'Message 1',
'groups': [1],
'readBy': ['cust1','cust2'],
'status': '1'
}
{
'id': 2,
'message': 'Message 2',
'groups': [1],
'readBy': ['cust2'],
'status': '1'
}
{
'id': 3,
'message': 'Message 3',
'groups': [2],
'readBy': ['cust2','cust1'],
'status': '1'
}
{
'id': 4,
'message': 'Message 4',
'groups': [2],
'readBy': ['cust2'],
'status': '1'
}
{
'id': 5,
'message': 'Message 5',
'groups': [2],
'readBy': ['cust2'],
'status': '1'
}
我为客户提供了另一个集合,因为我维护了组ID。
'cust1'
是群组ID = [1,2]
的一部分。
我想要cust1
无法读取消息的总计数。
在上述情况下,计数应为2
。
我尝试使用以下查询,但它返回未读消息总数。
db.Messages.aggregate(
{$unwind : "$groups" },
{$match:{
"groups": {
"$in": ["1","2"]
},
"status": "1",
"readBy": {
"$ne": "cust1"
}
}},
{$group:{_id:null,count:{$sum:1}}}
).pretty()
答案 0 :(得分:0)
以下查询满足上述功能。
db.Messages.aggregate(
{$unwind : "$groups" },
{$match:{
"groups": {
"$in": ["1","2"]
},
"status": "1",
"readBy": {
"$ne": "cust1"
}
}},
{$group:{_id:"$groups"}},
{$group:{_id:null,count:{$sum:1}}}
)