db.getCollection (...). find (...). aggregate не является функцией - PullRequest
0 голосов
/ 26 мая 2020

(* Версия оболочки MongoDB: 2.6.12 *)

У меня есть коллекция logs и коллекция users. В logs есть поле userId, которое представляет пользователя, отправившего журнал. users имеет поле _id.

Я использую Robo 3T для выполнения запросов к данным на удаленном сервере.

Теперь меня интересуют журналы, в которых url равно /subscribe, и я хочу видеть эту пользовательскую информацию позади. Итак, я пишу следующий запрос:

db.getCollection('logs').find({ "url" : "/subscribe" }).aggregate({
    $lookup:{
        from:"users",
        localField:"userId",
        foreignField:"_id",
        as:"logs_users"
    }
})

Но получаю сообщение об ошибке:

enter image description here

Кто-нибудь знает, как это решить ?

Изменить 1: Я получил новую ошибку:

enter image description here

1 Ответ

0 голосов
/ 26 мая 2020

Вы не должны использовать агрегат после поиска, вместо этого используйте агрегат напрямую и используйте оператор $ match для поиска документов, а затем $ lookup

db.getCollection('logs').aggregate([
   {
       $match:{"url" : "/subscribe"}
   },
   {
       $lookup:{
        from:"users",
        localField:"userId",
        foreignField:"_id",
        as:"logs_users"
       }
   }
])

Обновление: для использования $ lookup ваша версия MongoDB должна быть равна или больше 3,2, поскольку этот оператор (присоединение) не работает в более старых версиях MongoDB

...