Estoy tratando de realizar una consulta o en MongoDB.
tengo dos matrices
firstNames = ['John', 'Tim','Joey'] lastNames = ['Alex', 'Smith', 'Mac']Quiero realizar una consulta como
{$or: [{firstName: 'John', lastName: 'Alex'}, {firstName: 'John', lastName: 'Smith'}, {firstName: 'John', lastName: 'Mac'}, {firstName: 'Tim', lastName: 'Alex'} ... ]}Lo intenté
1.
Users.find({firstName: {$in: firstNames}, lastName: {$in: lastNames} }) Users.find({$or:[{firstName: {$in: firstNames}}, {lastName: {$in: lastNames} }]})pero esto está mal, supongo. ¿Alguien puede proporcionar una mejor solución a esto?
Puede crear una matriz de tuplas usando $zip . $match by $in para encontrar los registros esperados.
db.collection.aggregate([ { "$addFields": { "names": { "$zip": { "inputs": [ [ "John", "Tim", "Joey" ], [ "Alex", "Smith", "Mac" ] ] } } } }, { "$match": { $expr: { "$in": [ [ "$firstName", "$lastName" ], "$names" ] } } }, // cosmetics { "$project": { names: false } } ])Aquí está el parque infantil de Mongo para su referencia.