【发布时间】:2017-07-12 11:36:10
【问题描述】:
我正在尝试在 MongoDB 中使用 $multiply 运算符。
第 1 步
db.message1064sd_00011_3744.aggregate([
{$project : {
"prices.00026" : 1,
priceReal : {
price : "$prices.00026",
}
}},
{ $match : { "priceReal.price" : {$gt : 30 } } },
{ $limit : 1 }
])
我正在得到结果
{
"result" : [
{
"_id" : "54884_00011_001",
"prices" : {
"00026" : 34.43
},
"priceReal" : {
"price" : 34.43
}
}
],
"ok" : 1
}
第 2 步
但是,当我使用$multiply 时,我得到了
$multiply只支持数值类型,不支持数组
db.message1064sd_00011_3744.aggregate([
{$project : {
"prices.00026" : 1,
priceReal : {
price : { $multiply : ["$prices.00026", 1 ] },
}
}},
{ $match : { "priceReal.price" : {$gt : 30 } } },
{ $limit : 1 }
])
帮帮我
我可以从 db.message1064sd_00011_3744.findOne() 获得的示例文档
{
"_id" : "25906_00011_001",
"Message_ID" : 25906,
"Subdivision_ID" : 3747,
"Sub_Class_ID" : 6300,
"Checked" : 1,
"Nomencl_ID" : "10000014597",
"manufacturer_ID" : "П1170",
"disableIfZero" : 0,
"Discontinued" : 0,
"New" : 0,
"Nomencl_Group_ID" : 28,
"Nalichie" : "Мало",
"sort" : 99,
"Warehouse_ID" : "00011",
"ParentWarehouse_ID" : "00011",
"Kachestvo" : "001",
"Svobod_Nalichie" : "10",
"Svobod_sort" : 10,
"character" : [],
"prices" : {
"00014" : 1.51,
"00015" : 1.45,
"00016" : 1.41,
"00017" : 1.38,
"00018" : 1.35,
"00019" : 1.33,
"00021" : 1.31,
"00022" : 1.29,
"00023" : 1.28,
"00024" : 1.27,
"00025" : 1.25,
"00026" : 1.24
},
"price" : {
"Curr_ID" : 840,
"ChangePriceTime" : "2017-01-22 19:18:21",
"PriceUpDown" : "up",
"callPrice" : 0,
"Price_Value_RODP" : 1.24,
"Price_Value_RUR" : 72.04000000000001
},
"sName" : "чип epson m2300{m2400{mx20 8k (elp, китай)",
"sNomencl_ID" : "10000014597",
"sNomencl_Articul_Proizvod" : "elp-ch-e2300-8k",
"sItemID" : "elp-ch-e2300-8k",
"EnglishName" : "cZ277",
"begin_vl" : 121,
"Hidden_URL" : "/netshop/cZ079/cZ270/cZ277/",
"Checked_Subdivision" : 1
}
【问题讨论】:
-
我认为您的查询不会给您该错误。是否还有更多未发布的代码?
-
您使用的是哪个版本的 MongoDB 服务器(即
db.version(),如mongoshell 中报告的那样)?我没有收到您的文档和示例聚合的错误,尽管会注意到您当前的示例文档不会导致任何输出,因为$match阶段:{ "priceReal.price" : {$gt : 30 } }($prices.00026的值只有 1.24) .我怀疑您的文件有问题,与您提供的样本不同。 -
这是所有代码。我很惊讶,我觉得这个bug MongoDB 还是我做的不知道
-
谢谢大家。问题解决了。一个文档是一个空白的“价格”,MongoDB,并将其解释为一个数组。建立条件,一切正常
标签: javascript mongodb mongodb-query aggregation-framework