Nodejs / MongoDB: bir dizi ihtiyaçlarını $

oy
0

ne, yapmaya çalışıyorum iki koleksiyon katılıp isimler bir dizi içinde bulunan diğer whome sonra unsurları döndürmektir

Bu modellerdir

Araba modeli

id,
carAuthorizedDrivers:[String],
garageId:{type: Schema.ObjectId,ref:garage}

driversModel

id,
garageId:{type: Schema.ObjectId,ref:garage}
drivers:[{name:String,skill:String}]

Bu katılmak sonucudur

id:1D99399379773,
carAuthorizedDrivers:[DriverA,DriverB],
garageId:010003,
JoinDrivers:[drivers:[{name:DriverA,skill:89},{name:DriverB,skill:77},{name:DriverC,skill:45}]]

Ben joinDrivers sadece aşağıdaki içermesini istiyorsanız böylece isimler, carAuthorizedDrivers ait whome sadece sürücüler (isim + becerileri) göstermek amacıyla Joindrivers kısıtlamak istiyorum:

{name:DriverA,skill:89},{name:DriverB,skill:77}

ne ben yapmaya çalıştım şudur:

join () {
    return new Promise(function (resolve, reject) {
      Car.aggregate([
        {
          $lookup: {
            from: 'drivers', // collection name in db
            localField: 'garage_id',
            foreignField: 'garage_id',
            as: 'joinDrivers'
          }
        },
        { $unwind: '$Joindrivers' },
        { $unwind: '$Joindrivers.drivers' },
        { $unwind: '$carAuthorizedDrivers' },
        { $match: { 'Joindrivers.drivers.name': { $in: 'carAuthorizedDrivers' } } }
      ]).exec((err, result) => {
        if (err) {
          reject(err)
        }
        resolve(result)
      })
    })
  }

Ben olsun ihtiyaçlarını $ bir dizi HATA böyle elle bir Array koyarsanız, ancak:

$match: { 'Joindrivers.drivers.name': { $in: [DriverA,DriverB] } }  

iyi eserlerinde $ ve ben sonuç almak, bu sorunu nasıl çözerim?

Oluştur 19/03/2020 saat 22:05
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more