У меня есть коллекция, в которой каждый документ выглядит примерно так:MongoDB «» Отмотать вложенные объекты
{
_id: 'dev_id:datetime_hour',
data: {
0: {
0: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
1: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
2: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
59: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
}
},
1: {
0: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
1: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
2: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
},
59: {
voltage_a: float,
voltage_b: float,
voltage_c: float,
current_a: float,
current_b: float,
current_c: float,
current_n: float,
active_power_a: float,
active_power_b: float,
active_power_c: float,
total_active_power: float
}
}
}
я упростил его здесь, но основная идея: данные датчика сохраняются каждый второй, но в комплекте вместе по часам. Поле «данные» индексирует их на минуту и каждую минуту на вторую. Таким образом, данные в течение полного рабочего дня позволят получить 3600 записей во вложенном поле данных. Например, чтобы получить данные датчика за первую минуту и третью секунду, я мог напрямую получить доступ к объекту: data.1.3
.
Этот тип схемы был recommended for storing time series data by MongoDB.
Этап 1 моего агрегирования трубопровода выглядит следующим образом:
db.raw_electric.aggregate(
[
// Stage 1
{
$match: {
_id: { $regex: /^r10a:/ },
datehour: {$gte: ISODate("2016-09-21T17:00:00"), $lte: ISODate("2016-09-21T19:00:00")}
}
}
]
);
Можно ли «разматывания» документа - подобно тому, как вы бы размотать массив, так что я могу выставить каждый из вложенных слоев объекта?
Вы не можете «размотать» документ с помощью оператора '$ unwind', он применяется только к массивам. – chridam
Я знаю ... вот почему я ищу эквивалент/альтернативу для этого случая. –