2016-12-30 2 views
3

table1 имеет строковое поле «значение» и table2 имеет поле «значение» в качестве ObjectId, можно ли сделать запрос, как это или как написать

table1.aggregate([ 
    { 
     $lookup: { 
      from: "table2", 
      localField: "value", 
      foreignField: "_id", 
      as: "test" 
     } 
    } 
]) 

ответ

1

Насколько я знаю, чтобы присоединиться к коллекциям с использованием оператора $lookup в MongoDB Тип данных должен быть таким же. Если несоответствие типа, то $lookup не будет работать. Поэтому, чтобы присоединиться к вам, вы должны использовать те поля, которые являются того же типа, потому что он проверяет равенство.

этап $ поиска делает матч равенства между полем из входных документов с полем из документов «присоединился к» коллекции

  • If localField типа object затем foreignField должно быть object

  • Если localField типа string затем foreignField должен быть string

  • Если localField типа number затем foreignField должен быть number

$lookup Documentation

+0

возможно временно преобразовать строку объект для c hecking – arunraj414

+0

можно посетить эту ссылку http://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field –