Pregunta

Digamos que tengo un modelo llamado User. Tengo una matriz con ID de objeto.

Quiero obtener todos los registros de usuarios que "se cruzan" con la matriz de ID que tengo.

User.find({ records with IDS IN [3225, 623423, 6645345] }, function....
¿Fue útil?

Solución

Necesita usar el $ en operador>

https://docs.mongodb.com/manual/reference/operator/query/in/#op._s_in

Por ejemplo:

Users.find( { "fb" : { id: { $in : arrayOfIds } } }, callback );

Otros consejos

Aquí hay una forma de Mongoosey de usar el operador $ en.

User.find()
  .where('fb.id')
  .in([3225, 623423, 6645345])
  .exec(function (err, records) {
    //make magic happen
  });

Encuentro la notación del punto bastante útil para consultar en subocumentos.

http://mongoosejs.com/docs/queries.html

User.where({ records: { $in: [3225, 623423, 6645345] } }, function ...

Más información aquí: http://docs.mongodb.org/manual/reference/operator/query/

Para mi trabajo de esta manera

IDs=["5b00c4b56c7fb80918293dd9","5b00c4b56c7fb80918293dd7",...]
const users= await User.find({records:IDs}) 

IDS es la matriz de ID de objeto:

const ids =  [
    '4ed3ede8844f0f351100000c',
    '4ed3f117a844e0471100000d', 
    '4ed3f18132f50c491100000e',
];

Con devolución de llamada:

User.find().where('_id').in(ids).exec(callback);

Con función async:

records = await User.find().where('_id').in(ids).exec();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top