У меня есть коллекция, которая хранит стенограмму в этом формате:
{
convId: abcd,
timestamp: 2020-02-08T15:43,
source: { channel: 'channel1' }
},
{
convId: abcd,
timestamp: 2020-02-08T15:42,
source: { channel: 'channel1' }
},
{
convId: abcd,
timestamp: 2020-02-08T15:41,
source: { channel: null }
},
В некоторых записях поле source.channel пусто. Когда я использую конвейер агрегации для получения уникальных диалогов для некоторых из них, я получаю source.channel как null , что является проблемой. Я использую ниже $ group stage:
$group: {
_id: '$convId',
started: { $min: '$timestamp' },
ended: { $max: '$timestamp' },
channel: { $first: '$source.channel' },
}
Я знаю, что это проблема из-за $ first, поэтому я попытался использовать $ min и $ max (вместе с другими операторами агрегирования), так как они должны игнорировать нуль значения, но это не произойдет по неизвестным причинам (по крайней мере, в 1 документе есть поле source.channel, заполненное не нулевым).
Может кто-нибудь предложить, как я могу исключить null и вернуть поле со значением?
Редактировать: мне нужны все документы для отметок времени, поэтому я не могу уточнить это в $ соответствует.