我正在尝试构建用户邮件系统并需要一些帮助。我的收藏如下:
{
authorId: String,
recipientId: String,
message: String
}
我想要做的是将authorId
或recipientId
中包含当前用户的userId的所有邮件分组。我可以使用mongo聚合吗?
答案 0 :(得分:1)
您可以尝试以下聚合。 $group
null
推送所有邮件。
db.message.aggregate([{
$match: {
$or: [{
authorId: "someid"
}, {
recipientId: "someid"
}]
}
}, {
$group: {
_id: null,
messages: {
$push: "$message"
}
}
}])
答案 1 :(得分:0)
也许你可以在投影中使用$ 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'}
}
}
])