我如何使用aggregate从mongodb的一个表中得到每个图书ID的喜欢、不喜欢和分享的总数?

p4rjhz4m  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(186)

我有一个名为histories的表。下面是一个文档示例,
“类型”:“喜欢”、“bookId”:“用户ID”:“635122 ea 40 ef 5d 60 e653 fc 9 e”,“创建于”:“2022年10月23日06:50:09.166Z”,“更新时间”:“2022-10-23T06:50:09.166Z”、“___________________________________________________________________________________________________________________________________________________________________________0 }的情况下,
“类型”:“共享”、“bookId”:“用户ID”:“创建时间”:“2022年10月23日06:50:09.167Z”,“更新时间”:“2022-10-23T06:50:09.167Z”,“___________________________________________________________________________________________________________________________________________________________________________0个字符}
现在,我必须在mongodb中使用aggregate显示一个不同bookId的列表及其总的喜欢、共享和不喜欢计数。

jogvjijk

jogvjijk1#

您可以尝试使用

db.histories.aggregate([
    {
        $group: {
            _id: "$bookId" ,
            likes: {
                "$sum": { $cond: { if: { "$eq": ["$type", "like"]}, then: 1, else: 0 }}
            },
            dislikes: {
                "$sum": { $cond: { if: { "$eq": ["$type", "dislike"]}, then: 1, else: 0 }}
            },
            shares: {
                "$sum": { $cond: { if: { "$eq": ["$type", "share"]}, then: 1, else: 0 }}
            },
        }
    },
])

相关问题