Nodejs / MongoDB: $ στην αναγκών ένας πίνακας

ψήφοι
0

αυτό που προσπαθώ να κάνω, είναι να ενταχθούν σε δύο συλλογές και στη συνέχεια να επιστρέψουν τα στοιχεία whome υπάρχουν ονόματα μέσα σε έναν πίνακα

αυτά είναι τα μοντέλα

Μοντέλο αυτοκινήτου

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

driversModel

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

Αυτό είναι το αποτέλεσμα της συνένωσης

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

Θέλω να περιορίσει Joindrivers για το σκοπό της που δείχνει μόνο τα προγράμματα οδήγησης (όνομα + δεξιότητες) whome ονόματα ανήκουν σε carAuthorizedDrivers, έτσι θέλω joinDrivers να περιέχει μόνο την ακόλουθη:

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

αυτό που προσπάθησα να κάνω είναι η εξής:

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

Παίρνω $ σε αναγκών ένας πίνακας ERROR , αλλά αν βάλω έναν πίνακα με το χέρι σαν αυτό:

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

$ Σε έργα καλά και να πάρω το αποτέλεσμα, πώς μπορώ να λύσει αυτό το πρόβλημα;

Δημοσιεύθηκε 19/03/2020 στις 22:05
πηγή χρήστη
Σε άλλες γλώσσες...                            

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