Я хочу преобразовать строку поля значения 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",
"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 E QUERY [js] Ошибка: команда не выполнена:
{
"ok": 0,
"errmsg": "Неподдерживаемое преобразование из массива в int в $ convert
без значения onError",
"code": 241,
"codeName": "ConversionFailure"
}: сбой агрегата:
_getErrorWithCode@src/mongo/shell/utils.js: 25: 13
doassert @src / mongo / shell / assert.js: 18: 14
_assertCommandWorked@src/mongo/shell/assert.js: 534: 17
assert.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
Я тоже триed следующее:
db.collection_name.aggregate(
[{ '$project': { 'values': '$data.Cables.Value', }},
{ '$unwind': '$values' },
{ '$addFields': { 'avgValue': { '$avg': { 'input': '$values', 'to':
'int' } } } }
] )
Но я также получаю этот вывод:
{"_id": ObjectId ("5c509604fc007808c427edcb"), "values":
["24.3", "23.3", "25.3", "31.3", "90.3"], "avgValue": null}
Ожидаемое значение должно быть среднимполей значений.
Мне нужно какое-то преобразование для вложенных значений документа.
Значение входящей строки необходимо преобразовать в целые или десятичные числа, а затем рассчитать среднее его значение.
Это затем используется в коде C # для генерации конвейера
var pipeline = new[]
{
project, unwind, addfields
};