Nodejs / MongoDB: $ într-o matrice are nevoie

voturi
0

ceea ce am încercat să fac, este să se alăture două colecții și apoi să se întoarcă elemente whome există nume în interiorul unei matrice

acestea sunt modelele

Model de mașină

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

driversModel

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

acest lucru este rezultatul join

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

Vreau să restricționeze Joindrivers în scopul numai arătând drivere (nume + abilități) whome nume aparțin carAuthorizedDrivers, așa că vreau joinDrivers să conțină numai următoarele:

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

ceea ce am încercat să fac este următorul:

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)
      })
    })
  }

I a lua $ în nevoile matrice o eroare , dar dacă am pus manual o matrice ca aceasta:

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

$ În lucrări de bine și am obține rezultatul, cum pot rezolva această problemă?

Întrebat 19/03/2020 la 22:05
sursa de către utilizator
În alte limbi...                            

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