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 array
debo seleccionar uno por uno y luego recomponer los array/object
resultados?
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ónden
está el tamaño de la colección ym
el 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
bson
y para bson son tipos de atributos importantes. y porque_id
esObjectId
usted debe usar la siguiente manera:db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
y en
mongodb compass
uso así:{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Nota: objectId en cadena tiene
24
longitud.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
aggregate
ymatch
const 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