è possibile in mongo db selezionare i documenti della raccolta come in SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
o se ne ho uno _id array
devo selezionarne uno per uno e poi ricomporre i array/object
risultati?
Risposte:
Facile :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
tratto da: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)
dov'è n
la dimensione della raccolta e m
il numero di ID passati?
Perché mongodb utilizza bson
e per bson è tipi di attributi importanti. e poiché _id
è ObjectId
si deve utilizzare in questo modo:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
e in mongodb compass
uso in questo modo:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Nota: objectId nella stringa ha 24
lunghezza.
Questo non è correlato alla query mongo. Conoscevo SQL e utilizzavo l'IDE di Studio3T per interrogare un database mongo usando SQL. Se sei uno come me, voglio sottolineare che il valore id deve essere typecast. Quindi la query sarà simile a:
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");