Позволяет разбить компоненты запроса:
SELECT DISTINCT 1 as table_id, users.id, users.username, a.titles_name title1, b.titles_name as title2, contacts.accepted
FROM users
Да, это просто отдельный запрос, запрашивающий подмножество полей. Монго делает это.
LEFT JOIN contacts ON users.id = contacts.contact_id
LEFT JOIN titles as a ON a.id = users.title_1
LEFT JOIN titles as b ON b.id = users.title_2
WHERE contacts.request_id = ' + $this->session->userdata('user_id') . '
Это соединение, которое вы не можете сделать в монго. Однако вы можете отменить нормализацию, чтобы она стала ненужной, или выполнить аналогичное объединение данных на стороне клиента.
UNION DISTINCT
SELECT DISTINCT 2 as table_id, users.id, users.username, a.titles_name title1, b.titles_name as title2, contacts.accepted
FROM users
LEFT JOIN contacts ON users.id = contacts.request_id
LEFT JOIN titles as a ON a.id = users.title_1
LEFT JOIN titles as b ON b.id = users.title_2
WHERE contact_id = ' . $this->session->userdata('user_id')
Это объединение, которое вы можете выполнить на стороне клиента и для которого запрос содержит те же компоненты, которые я описал выше.
TLDNR: Нет, вы не можете выполнить этот точный запрос в mongodb, но вы можете достичь того же результата.