首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于总产出的MongoDB $divide

关于总产出的MongoDB $divide
EN

Stack Overflow用户
提问于 2019-10-17 08:48:54
回答 1查看 514关注 0票数 1

是否有可能计算已经累计的计算字段的数学运算?

我有这样的事情:

代码语言:javascript
复制
([
        {
                "$unwind" : {
                        "path" : "$users"
                }
        },
        {
                "$match" : {
                        "users.r" : {
                                "$exists" : true
                        }
                }
        },
        {
                "$group" : {
                        "_id" : "$users.r",
                        "count" : {
                                "$sum" : 1
                        }
                }
        },
])

它提供的输出如下:

代码语言:javascript
复制
{ "_id" : "A", "count" : 7 }
{ "_id" : "B", "count" : 49 }

现在我想把7除以49,反之亦然。

有可能这样做吗?我试过$project和$divide,但是没有运气。

任何帮助都会很感激的。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-19 09:03:23

从你的问题上看,你似乎只假设结果数为2。在这种情况下,我可以假设users.r只能有2个值(除了null)。

我建议的最简单的方法是通过javascript(如果您在mongo控制台中使用它)或在程序中使用它时,使用您使用的语言访问mongo)。

代码语言:javascript
复制
var results = db.collection.aggregate([theAggregatePipelineQuery]).toArray();
print(results[0].count/results[1].count);

编辑:,我与上面的方法共享一个替代,因为OP评论了不使用javascript代码的限制,以及只需要通过查询完成。就是这里

代码语言:javascript
复制
([
       { /**your existing aggregation stages that results in two rows as described in the question with a count field **/ },
       { $group: {"_id": 1, firstCount: {$first: "$count"}, lastCount: {$last: "$count"} 
       },
       { $project: { finalResult: { $divide: ['$firstCount','$lastCount']} } }
])

//The returned document has your answer under `finalResult` field
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58428523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档