У меня есть коллекция с такими документами, как:
{
"_id" : "ThisIsASampleId_rand12345",
"timestamp" : ISODate("2019-04-30T10:53:34.515Z"),
"mySpecialId" : "specialId_12345",
"status" : "error",
}
Моя цель - найти все документы с {status: 'error'}
, если нет последующих документов с такими же mySpecialId
и status
'success'
.
Ясно, что я могу сделать db.jobs.find({status: 'error'})
, но после этого я теряюсь.
Нужно ли сделать $lookup
в конвейере агрегации в той же коллекции, используя"mySpecialId"
как локальные, так и внешние поля, с $match
, который включает в себя что-то вроде {$gt: {timestamp: $PREVIOUS_TIMESTAMP}}
?Это как-то не так.
Есть ли более простой / лучший / более элегантный способ сделать это?