在MongoDB中与同一用户进行回复和评论的聚合



>想象一下,我们有如下结构:

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"]
            },

        }
    }

])

我不知道问题出在哪里!

如果您需要

更清晰的结果,请在注释中添加结果样本。

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" }
        }
    }
])

相关内容

  • 没有找到相关文章

最新更新