首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:$divide和$multiply出错

MongoDB:$divide和$multiply出错
EN

Stack Overflow用户
提问于 2017-04-11 17:25:36
回答 1查看 13.1K关注 0票数 9

我正在创建一个MongoDB聚合管道,并且我被困在这个阶段:

代码语言:javascript
复制
        $group: {
            _id: {checkType: "$_id.checkType", resultCode: "$_id.resultCode"},
            count: { $sum: "$count" },
            ctv: { $sum: "$ctv" },
            perc:{$multiply:[{$divide:["$ctv","$count"]},100]},
            weight: { $divide: [ "$ctv", "$count"] },
            details: { $push: "$$ROOT" }
        }

它会给出错误“$multiply累加器是一个一元运算符”。类似地,如果我用$multiply删除这一行,我会在随后的行上得到“$divide累加器是一个一元运算符”。我在网上找不到这个错误的描述。我的中文税怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-11 17:32:04

arithmetic operators不能用作 accumulators。将它们移动到另一个管道阶段,如下所示:

代码语言:javascript
复制
db.collection.aggregate([
    { "$group": {
        "_id": { "checkType": "$_id.checkType", "resultCode": "$_id.resultCode" },
        "count": { "$sum": "$count" },
        "ctv": { "$sum": "$ctv" },
        "details": { "$push": "$$ROOT" }
    } },
    { "$project": {
        "count": 1,
        "details": 1,
        "ctv": 1,
        "perc": { "$multiply": [ { "$divide": ["$ctv","$count"] }, 100 ] },
        "weight": { "$divide": ["$ctv", "$count"] },
    } }
])

如果使用MongoDB 3.4及更高版本,请使用而不是

代码语言:javascript
复制
db.collection.aggregate([
    { "$group": {
        "_id": { "checkType": "$_id.checkType", "resultCode": "$_id.resultCode" },
        "count": { "$sum": "$count" },
        "ctv": { "$sum": "$ctv" },
        "details": { "$push": "$$ROOT" }
    } },
    { "$addFields": {
        "perc": { "$multiply": [ { "$divide": ["$ctv","$count"] }, 100 ] },
        "weight": { "$divide": ["$ctv", "$count"] },
    } }
])
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43341863

复制
相关文章

相似问题

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