Хорошо, я пытаюсь перевести этот запрос в MongoDB из MySQL, так как он мне нужен для оптимизации моих данных, но пока я ничего не добился ...
MySQL запрос
SELECT notifications.entity_id
FROM notifications
INNER JOIN discussions
ON notifications.entity_id = discussions._id
WHERE notifications.subscribers = 1
Независимо от того, что я пытаюсь, я не могу даже приблизиться к JOIN другой таблице ... Я сделал это простым способом в PHP, но это вызывает много головных болей из-за минимальной оптимизации ...
public function getData($userId) {
$wheres = ['subscribers' => $userId];
$data = $this->get($wheres, ['entity_id']); # works for notifications table that I have predefined for this function
$wheres = ['_id' => $data['_id']];
$data = $this->get_discussions($wheres, []); #queries discussions table
return $data;
}






Мое решение для этого запроса mysql - это
db.notifications.aggregate({
{$match : {subscribers : 1}},
$lookup:{
from:"discussions",
localField:"entity_id",
foreignField:"id",
as:"entityids"
},
{ "$unwind": "$entityids" }
})
Запустите это на оболочке mongo. Вы можете запустить это в коде PHP также с помощью методов php. Надеюсь, что это поможет вам.
Возможный дубликат Как выполнить эквивалент SQL Join в MongoDB? или mongodb php - как выполнить запрос типа «INNER JOIN»