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

मैं केवल ड्राइवरों (नाम + कौशल) दिखा whome नाम, carAuthorizedDrivers के हैं तो मैं joinDrivers केवल निम्नलिखित शामिल करना चाहते हैं के उद्देश्य के लिए 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)
      })
    })
  }

मैं जरूरतों में $ एक सरणी त्रुटि है, लेकिन अगर मैं इस तरह मैन्युअल रूप से एक सरणी डाल:

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

$ कार्यों में अच्छी तरह से और मैं परिणाम प्राप्त, मैं कैसे इस समस्या को हल करते हैं?

20/03/2020 को 00:05
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            

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