mongodb - 在 mongodb 中相乘说只对字符串类型进行操作

标签 mongodb mongodb-query aggregation-framework

我正在尝试在 mongodb 中乘以 2 个字段。都是数值类型,但是mongodb返回的是$multiply只支持数值类型。集合是:

{
        "_id" : ObjectId("55e07eb54acc499bb3daae6a"),
        "propertytype" : "Hotel",
        "name" : "Rude Lounge2",
        "costing" : {
                "vegperplate" : 350,
                "nonvegperplate" : 450,
                "flatcharge" : 20000
        },
        "capacity" : {
                "min" : 90,
                "max" : 200
        }
}
{
        "_id" : ObjectId("55e07ebe4acc499bb3daae6b"),
        "propertytype" : "Hotel",
        "name" : "Rude Lounge3",
        "costing" : {
                "vegperplate" : 350,
                "nonvegperplate" : 450,
                "flatcharge" : 20000
        },
        "capacity" : {
                "min" : 90,
                "max" : 200
        }
}

我的查询是:

> db.properties2.aggregate(
... { $project: {
...  "cost": {
... $multiply:["costing.vegperplate","capacity.min"]
...       }
... }
... })

错误堆栈是:

assert: command failed: {
        "errmsg" : "exception: $multiply only supports numeric types, not String",
        "code" : 16555,
        "ok" : 0
} : aggregate failed
Error: command failed: {
        "errmsg" : "exception: $multiply only supports numeric types, not String",
        "code" : 16555,
        "ok" : 0
} : aggregate failed
    at Error (<anonymous>)
    at doassert (src/mongo/shell/assert.js:11:14)
    at Function.assert.commandWorked (src/mongo/shell/assert.js:244:5)
    at DBCollection.aggregate (src/mongo/shell/collection.js:1149:12)
    at (shell):1:16
2015-08-29T00:13:39.173-0400 Error: command failed: {
        "errmsg" : "exception: $multiply only supports numeric types, not String",
        "code" : 16555,
        "ok" : 0
} : aggregate failed at src/mongo/shell/assert.js:13

有人说我哪里做错了吗?

最佳答案

您需要在字段名称前加上 $ 符号,因为您的操作涉及文档中的两个不同字段。

db.properties2.aggregate([
    { 
        "$project": {
            "cost": { "$multiply": [ "$costing.vegperplate", "$capacity.min" ]}
    }
])

关于mongodb - 在 mongodb 中相乘说只对字符串类型进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32282655/

相关文章:

node.js - Mongoose 查询 : populate top 2 comments from Post Schema

mongodb - 如何将Mongodb时间点数据分组为连续的时间组?

Mongodb $cond 与 find

c# - 未知鉴别器值 "SqlException",如何忽略动态类型的鉴别器

mongodb - 检查字段是否存在,然后与 Mongoose 中的值进行比较

Mongodb在创建新用户时出错

c# - MongoDB 文档架构

javascript - 如何使用 Node.js 查询 Mongodb?

javascript - 计算mongodb中对象内的键数

Node.Js MongoDB 在获取列表时格式化日期