В моем конвейере агрегации есть такая структура подмассива:
{
"_id": "london_10:2016-10-07 12",
"data": {
"voltage_a": 0.008888,
"voltage_b": 0.008888,
"voltage_c": 0.008888,
},
"Voltage (V)": 0.008888,
"datetime": "2016-10-07T11:25:46"},
На этапе $ project я прохожу все, что есть в подмассиве «данные», как оно существует в настоящее время:
[
'$project' => [
'data' => '$data',
'Voltage (V)' => [
'$divide' => [
['$add' => ['$data.voltage_a', '$data.voltage_b', '$data.voltage_c']]
],
],
]
]
Как проецировать данные таким образом, чтобы они выводили Voltage_a, Voltage_B и Voltage_C на одном уровне с «Voltage (V)» и «Datetime», то есть с плоской структурой?
Для плоской структуры, где у вас есть выход с voltage_a
, voltage_b
а также voltage_c
на том же уровне, что и "Voltage (V)"
а также "datetime"
запустите ваш конвейер следующим образом:
[
'$project' => [
'voltage_a' => '$data.voltage_a',
'voltage_b' => '$data.voltage_b',
'voltage_c' => '$data.voltage_c',
'Voltage (V)' => [
'$divide' => [
[ '$add' => ['$data.voltage_a', '$data.voltage_b', '$data.voltage_c'] ]
],
],
'datetime' => 1
]
]
Других решений пока нет …