String MongoDB字符串到int
我想将MongoDB值字段的字符串转换为整数,然后计算平均值 这是我的JSON:String MongoDB字符串到int,string,mongodb,int,average,String,Mongodb,Int,Average,我想将MongoDB值字段的字符串转换为整数,然后计算平均值 这是我的JSON: "_id" : ObjectId("5c49f398fc0078178c76705b"), // my json data "Time_Created" : ISODate("2019-01-24T17:19:20.205Z"), // date "Test_ID" : "1", "data" : [ { "Device_id" : "1"
"_id" : ObjectId("5c49f398fc0078178c76705b"), // my json data
"Time_Created" : ISODate("2019-01-24T17:19:20.205Z"), // date
"Test_ID" : "1",
"data" : [
{
"Device_id" : "1",
"Total_wires" : "5",
"Cables" : [
{
"TAG" : "4001",
"Value" : "24.3"
},
{
"TAG" : "4002",
"Value" : "21.3"
},
{
"TAG" : "4003",
"Value" : "21.3"
},
{
"TAG" : "4004",
"Value" : "21.3"
},
{
"TAG" : "4005",
"Value" : "100.3"
}
]
}
]
}
我使用以下查询来提取平均值
db.collection_name.aggregate( [{ '$project': { 'values': '$data.Cables.Value', }}, { '$unwind': '$values' }, { '$addFields': { 'avgValue': { '$avg': { $toInt: '$values' } } } } ] )
但我得到了这个错误:
2019-01-29T11:06:05.642-0800电子查询[js]错误:命令失败:{
“确定”:0,
“errmsg”:“在$convert中不支持从数组到int的转换
没有一个错误值“,
“代码”:241,
“代码名”:“转换失败”
}:聚合失败:
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandWorked@src/mongo/shell/assert.js:534:17
断言。commandWorked@src/mongo/shell/assert.js:618:16
DB.prototype_runAggregate@src/mongo/shell/db.js:260:9
DBCollection.prototype。aggregate@src/mongo/shell/collection.js:1062:12
@(外壳):1:1
db.collection_name.aggregate(
[{ '$project': { 'values': '$data.Cables.Value', }},
{ '$unwind': '$values' },
{ '$addFields': { 'avgValue': { '$avg': { 'input': '$values', 'to':
'int' } } } }
] )
但我也得到了这个输出:
{“_id”:ObjectId(“5c509604fc007808c427edcb”),“值”:[“24.3”、“23.3”、“25.3”、“31.3”、“90.3”],“avgValue”:空 }
我需要对嵌套文档值进行某种转换 传入的字符串值必须转换为整数或小数,然后计算其平均值 然后在C#代码中使用它来生成管道
var pipeline = new[]
{
project, unwind, addfields
};
使用
toDouble
而不是toInt
,因为您的值不是整数。尝试下面的步骤
[
{
'$project': {
'values': '$data.Cables.Value'
}
}, {
'$unwind': {
'path': '$values'
}
}, {
'$project': {
'values': {
'$map': {
'input': '$values',
'as': 'value',
'in': {
'$toDouble': '$$value'
}
}
}
}
}, {
'$addFields': {
'avgValue': {
'$avg': '$values'
}
}
}
]