Estoy tratando de encontrar un equivalente a esta consulta MongoDB db.inventory.find( { tags: { $all: ["red", "blank"]}}) en Mongoose. Encontré este en Mongoose Model.find({'field': { $in: array name }) pero me da como resultados documentos con todos los elementos de la matriz en un documento y también documentos que coinciden con al menos uno de los elementos en la matriz.
Aquí hay un código que estoy usando para mostrar artesanos con especialidades específicas:
mostrar la ruta de los perfiles de los artesanos
app.post('/artisanprofile', function(req, res){ const profile = []; const result = req.body.search; console.log(result); console.log(typeof result); const specialities = result.split(" "); console.log(specialities); Artisan.find({ 'speciality': { $in: specialities } }, function(err, profiles) { if(err){ console.log(err); } else{ console.log(profiles); } }); }); los documentos que busco son los que tienen especialidades test y test1, pero obtengo todos los documentos con al menos uno de los elementos en la matriz de specialties pasadas a la consulta.
pruébelo use and y para cada elemento de specialities use $in
app.post('/artisanprofile', function(req, res){ const profile = []; const result = req.body.search; console.log(result); console.log(typeof result); const specialities = result.split(" "); console.log(specialities); var andObj = {} var andArr = [] specialities.forEach(item=>{ var itemArr = [] itemArr.push(item) andObj['$in'] :itemArr andArr.push({speciality:andObj}) andObj = {} }) Artisan.find({ $and : andArr }, function(err, profiles) { if(err){ console.log(err); } else{ console.log(profiles); } }); });