Запрос по ключу дочернего объекта, который имеет нулевое значение коллекции отношений в БД Mongo с Laravel - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две коллекции уведомлений и отчетов. Каждое уведомление не имеет отчета, и уведомление имеет отношение к сообщению из поля с именем 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 или построителя запросов.

...