Mongoose 中字段的每个不同值的行数

Posted

技术标签:

【中文标题】Mongoose 中字段的每个不同值的行数【英文标题】:Row count per each distinct value of the field in Mongoose 【发布时间】:2020-07-25 13:42:15 【问题描述】:

我有一个类似 reactionType: String, userName: String 的架构(非常简化),我想计算给定用户对每种类型的反应有多少。如何使用 Mongodb 和 Mongoose 做到这一点?

我试过了

MyModel.find( userName: 'myUser' ).distinct('reactionType').count()

以及它的变体,但这似乎计算给定用户的反应类型,而不是用户的每个反应类型的计数。

如果这有助于澄清我想要什么,在 SQL 中我会做类似的事情

SELECT ReactionType, COUNT(1) FROM TheTable
WHERE UserName = 'myUser'
GROUP BY ReactionType

但是如何将它翻译成猫鼬语呢?

我发现this 似乎相关的问题,但它解决了一个不同的问题,鉴于上述情况并没有帮助。

【问题讨论】:

【参考方案1】:

您需要聚合框架的$group 运算符:

MyModel.aggregate([
    
        $match:  userName: 'myUser' 
    ,
    
        $group: 
            _id: "$reactionType",
            count:  $sum: 1 
        
    
])

【讨论】:

以上是关于Mongoose 中字段的每个不同值的行数的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 计算包含两个不同字段的行数

40.Oracle的统计信息

计算其中的行数以找到特定值的行数[重复]

Oracle统计信息

Gravity Forms使用JS统计List中的行数并返回字段?

猫鼬查询具有不同值的相同字段