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?
Respuestas:
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ónde nestá el tamaño de la colección y mel número de identificadores pasados?
Porque mongodb usa bsony para bson son tipos de atributos importantes. y porque _ides ObjectIdusted 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.
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 aggregateymatch
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),
},
},
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");