es posible en mongo db seleccionar los documentos de la colección como en SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
o si tengo un _id arraydebo seleccionar uno por uno y luego recomponer los array/objectresultados?
Fácil :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
extraído de: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)dóndenestá el tamaño de la colección ymel número de identificadores pasados?En esta lista de códigos está la matriz de identificadores en la colección de usuarios
var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"] .find({ _id: {$in : list}})fuente
Porque mongodb usa
bsony para bson son tipos de atributos importantes. y porque_idesObjectIdusted debe usar la siguiente manera:db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );y en
mongodb compassuso así:{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }Nota: objectId en cadena tiene
24longitud.fuente
si desea buscar por usuario y también por otro campo como condicionalmente, puede hacerlo fácilmente como a continuación con el operador de propagación y ternario usando
aggregateymatchconst p_id = patient_id; let fetchingReports = await Reports.aggregate([ ...(p_id ? [ { $match: { createdBy: mongoose.Types.ObjectId(id), patient_id: p_id, }, }, ] : [ { $match: { createdBy: mongoose.Types.ObjectId(id), }, },fuente
Esto no está relacionado con la consulta mongo. Estaba familiarizado con SQL y usé Studio3T IDE para consultar una base de datos mongo usando SQL. Si eres uno como yo, quiero señalar que el valor de id debe ser redactado. Entonces la consulta se verá así:
SELECT _id from <collectionName> WHERE _id = ObjectId("5883d387971bb840b7399130");fuente