Как выполнить equi join в mongodb? - PullRequest
0 голосов
/ 11 мая 2018

Я знаю, как использовать поиск в mongoDB для выполнения левого соединения, но есть ли какой-нибудь возможный способ выполнить равное соединение, когда я получаю документы только при совпадении обоих полей?

db.collection1.aggregate([
  {
    $lookup:{
      from: "collection2",
      localField: "fname",
      foreignField: "fname",
      as: "sameFirstName"
    }
  }
]).pretty()

Предположим, вПриведенный выше код, я знаю, что он выполнит левое соединение, сопоставляя все fname в collection1 с fname в collection2, а также возвращая fname в collection1, которые не имеют никакого совпадения в collection2 (показывая ноль, потому что это левое внешнее соединение).Что если я хочу сделать равное соединение и вернуть только результат с одинаковым именем в обеих коллекциях?

1 Ответ

0 голосов
/ 12 мая 2018

Следуя конвейеру $ lookup, используйте переменную $ match для переменной "as" при поиске.

db.collection1.aggregate([
   {
     $lookup:{
             from: "collection2",
             localField: "fname",
             foreignField: "fname",
             as: "sameFirstName"
     }
   },
   {"$match":{"sameFirstName":{$ne:[]}}}
 ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...