Nodejs / MongoDB: $ en las necesidades de una matriz

votos
0

lo que estoy tratando de hacer, es para unir dos colecciones y luego regresar elementos whome existen nombres dentro de una matriz

estos son los modelos

Modelo de auto

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

driversModel

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

este es el resultado de la unión

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

Quiero restringir Joindrivers con el propósito de mostrar sólo los conductores (+ habilidades de nombre) whome nombres pertenecen a carAuthorizedDrivers, así que quiero a joinDrivers contienen solamente la siguiente:

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

lo que traté de hacer es la siguiente:

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

Me sale $ en las necesidades de un ERROR gama , pero si pongo una matriz de forma manual como esto:

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

$ En obras de bien y me da el resultado, ¿cómo puedo solucionar este problema?

Publicado el 20/03/2020 a las 00:05
fuente por usuario
En otros idiomas...                            

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