У меня есть две коллекции уведомлений и отчетов. Каждое уведомление не имеет отчета, и уведомление имеет отношение к сообщению из поля с именем report_reference_id через то же поле в отчете.
В отчете есть поле специалистов, которое содержит объект с идентификатором специалиста в качестве даты или значения. , В некоторых случаях нет даты, и она может иметь нулевое значение.
Мне нужно получить уведомление, в котором есть отчеты, в которых указан конкретный специалист.
Я пытался выбрать отчеты, в которых есть специалист со значением NULL, с этим запросом
db.getCollection('generated_report').find({ $and[{'specialists.5cc022d222bca937f5263662':null},{'specialists.5cc022d222bca937f5263662':{$exists:true}} ] })
Это дает правильные документы отчета. Но требование состоит в том, что мне нужны уведомления, в которых есть эти конкретные отчеты. И приложение - Laravel. Вот как я пытался с moloquent.
Notification::with(['report'=>function($q)use($authUserId){
$q->where('specialists.'.$specialistId,null)->where('specialists.'.$specialistId,'exists',true);
}])
->where('to', $authUser['_id'])
->where('action', $type)
->get()->toArray();
Это дает уведомления с отчетами независимо от условия выбора отчета. Очень ценю, если кто-то может дать правильное решение с помощью moloquest или построителя запросов.