У меня отношение «один ко многим» между devices
и events
.Я пытаюсь запросить devices
, при этом объединяя все его events
, которые также должны соответствовать другому условию.
Вот соответствующие свойства каждой таблицы:
devices:
{
networkId: String,
serial: String // Unique device ID.
...
}
events:
{
deviceSerial: String, // The "serial" field of the device this event is for.
ts: Number // Unix epoch timestamp in seconds.
...
}
Я обнаружил, что синтаксис 3.6 для $lookup
делает именно то, что я хочу, однако, похоже, он не работает.Я получаю правильные устройства, но массив events
всегда возвращается пустым, но я точно знаю, что есть события, соответствующие условиям.
Мой конвейер:
[
{
$match: {
networkId: 'N_660903245316632251'
}
},
{
$lookup: {
from: 'events',
let: {'deviceSerial': '$deviceSerial'},
pipeline: [
$match: {
deviceSerial: '$$deviceSerial',
ts: {$gte: 1556686800, $lte: 1559365199}
}
]
}
}
]
Результаты успешно возвращаются с выбранными устройствами, но массив событий всегда пуст:
[
{
...
events: []
}
...
]