Mongodb 如何将在一个字段或另一个字段中有值的mongo和group记录中的$group和$or组合在一起?
我正在尝试建立一个用户消息系统,需要一些帮助。我的收藏如下:Mongodb 如何将在一个字段或另一个字段中有值的mongo和group记录中的$group和$or组合在一起?,mongodb,Mongodb,我正在尝试建立一个用户消息系统,需要一些帮助。我的收藏如下: { authorId: String, recipientId: String, message: String } 我要做的是将当前用户的userId包含在authorId或recipientId中的所有消息进行分组。我可以使用mongo聚合来实现这一点吗?也许您可以在投影中使用$cond进行尝试 db.message.aggregate([ { $matc
{
authorId: String,
recipientId: String,
message: String
}
我要做的是将当前用户的userId包含在authorId或recipientId中的所有消息进行分组。我可以使用mongo聚合来实现这一点吗?也许您可以在投影中使用$cond进行尝试
db.message.aggregate([
{
$match : {$or : [{authorId:'1234'},{recipientId:'1234'}]}
},
{
$project : {
message : 1,
userId : {$cond : {if : {'$authorId':'1234'},'$authorId','$recepientId'}}
}
},
{
$group : {
_id : '$userId',
messages : {$push : '$message'}
}
}
])
你可以试试下面的聚合$按null分组以推送所有消息
db.message.aggregate([{
$match: {
$or: [{
authorId: "someid"
}, {
recipientId: "someid"
}]
}
}, {
$group: {
_id: null,
messages: {
$push: "$message"
}
}
}])