Mongo查询获取总计

贾斯汀

如果我有一个看起来像这样的架构:

    var person = new Schema({
         active: {type: Boolean},
         otherSetting: {type: Boolean} 
    });

是否只有一个查询就能获得所有人员的总数,活动人员总数,非活动人员总数以及otherSetting设置为true且other Setting设置为false的人员的总数?是否必须将otherSetting和active分为两个查询?

我一直在研究这个问题的聚合框架,尽管这似乎是一个简单的问题,但我似乎无法仅凭一个查询就可以做到这一点。

可能吗?谢谢你的帮助。

布雷克七世

聚合框架具有逻辑运算符,如$cond能很好的与你在这里布尔conition:

db.collection.aggregate([
    { "$group": {
        "_id": null,
        "active": { "$sum": { "$cond": [ "$active", 1, 0 ] } },
        "inActive": { "$sum": { "$cond": [ "$active", 0, 1 ] } },
        "total": { "$sum": 1 }
    }}
])

$cond运算符是“三元”运算符(if / then / else),它允许对逻辑条件进行评估以返回true(then)或false(else)值。

“布尔值”的计算方式true/false与第一个参数相同,该参数$cond将适当的值传递参数$sum以获取条件总计。

一切都在单个$group管道阶段中工作,并且具有分组键_idnull因为您要累加整个集合。如果将另一个字段的值分组,则将其替换null为所需的字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

添加SQL查询返回的值以获取总计?

来自分类Dev

如何获取mongo查询/集合中记录的位置?

来自分类Dev

jQuery表获取总计

来自分类Dev

从mongo查询结果中获取ID

来自分类Dev

NgTable获取数据总计

来自分类Dev

SQL查询以使用中断事件获取运行总计

来自分类Dev

总计获取Angularjs

来自分类Dev

查询以获取“库存更改”列的运行总计

来自分类Dev

获取dateTime的总计

来自分类Dev

SQL查询获取汇总计数

来自分类Dev

Mongo查询以获取不同的嵌套文档

来自分类Dev

Mongo Db查询以获取不同的记录

来自分类Dev

SQL查询以获取过去12个月中符合条件的记录的运行总计

来自分类Dev

SELECT查询,底部有总计

来自分类Dev

使用Mongo使用汇总+构面获取总计数

来自分类Dev

SQL查询以使用中断事件获取运行总计

来自分类Dev

从运行总计获取每月总计

来自分类Dev

MySQL查询:从两个不相关的表中获取总计

来自分类Dev

SQL子总计和最终总计查询

来自分类Dev

在mongo db中获取查询时出错

来自分类Dev

jQuery表获取总计

来自分类Dev

NgTable获取数据总计

来自分类Dev

SQL查询找到运行总计

来自分类Dev

Mongo获取查询逆

来自分类Dev

SQL查询按日期时间分组并获取其他2个字段的总计值

来自分类Dev

窗口查询的运行总计

来自分类Dev

从javascript websocket获取总计

来自分类Dev

在访问查询中运行总计

来自分类Dev

SQL 查询以查找总计