在mongodb中与同一用户的答复和评论聚合

时间:2019-01-23 15:24:27

标签: mongodb aggregate

想象一下我们的结构如下:

comments: [{
    user: '...',
    upVotes: 12,
    text: '...'
    replies: [{
        user: '...',
        upVotes: 34,
        text: '...'
    }]
}]

我们想要的是检索用户以及同一用户的评论和答复文本! 我已经实现了以下查询,但是它不起作用:

db.getCollection('links').aggregate([
    {
        $unwind: "$comments"
    },
    {
        $unwind: "$comments.replies"
    },
    {
        $project: {
            sameAuthor: {
                $eq: ["$comments.user", "$comments.replies.user"]
            },


        }
    }


])

我不知道问题出在哪里!

1 个答案:

答案 0 :(得分:0)

如果您需要更清晰的结果,请在评论中添加结果示例。

db.links.aggregate([
    { $unwind: '$comments'},
    { $unwind: '$comments.replies'},
    { $match: { $expr: { $eq: ["$comments.user", "$comments.replies.user"] } } },
    { $group: { 
        _id: '$_id',
        user: { $first: "$comments.user" },
        commentText: { $first: "$comments.text" },
        repliesTaxt: { $push: "$comments.replies.text" }
        }
    }
])