Внутреннее присоединение к mongoDB в PHP - PullRequest
0 голосов
/ 24 августа 2018

Хорошо, поэтому я пытаюсь перевести этот запрос в MongoDB из MySQL, так как он мне нужен для оптимизации моих данных, но пока я ничего не добился ...

Запрос MySQL

SELECT notifications.entity_id 
FROM notifications
INNER JOIN discussions
ON notifications.entity_id = discussions._id 
WHERE notifications.subscribers = 1

Независимо от того, что я пытаюсь, мне кажется, что я даже близко не могу присоединиться к другой таблице ... Я сделал это простым способом в 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;
}

1 Ответ

0 голосов
/ 24 августа 2018

Мое решение для этого запроса MySQL состоит в следующем:

db.notifications.aggregate({
    {$match : {subscribers : 1}},
    $lookup:{
        from:"discussions",
        localField:"entity_id",
        foreignField:"id",
        as:"entityids"
    },
    { "$unwind": "$entityids" }
})

Запустите это на оболочке mongo.Вы можете запустить это в коде PHP также с помощью методов php.Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...