У меня есть массив, как показано ниже:

"developers" : [ 
        "5bfe4059c8698b30183db389", 
        "5bfe406ec8698b30183db38a"
    ]

И его модель выглядит так:

developers:{
    type: Array,
    ref: 'User',
    default:[]
  }

,

Я хочу заполнить его в mongodb. Я попробовал .populate («разработчики»), но безуспешно.

1
user10742206 7 Дек 2018 в 09:50

1 ответ

Лучший ответ

Вы можете использовать агрегат

Сначала вам нужно раскрутить массив

{
  $unwind:
    {
      path: <field path>,
      preserveNullAndEmptyArrays: <boolean>
    }
}

И после слова вы можете использовать $ loockup

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

Весь трубопровод выглядит как

db.getCollection('dates').aggregate([{
$unwind:'$developers'
},{
 $lookup:
         {
           from: 'users',
           localField: 'developers',
           foreignField:'id',
           as: 'info'
         }
}])

Надеюсь, это поможет

0
shivam dhankani 7 Дек 2018 в 08:47