est possible dans mongo db pour sélectionner les documents de la collection comme en SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
ou si j'ai un _id array
je dois sélectionner un par un puis recomposer les array/object
résultats?
Facile :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
extrait de: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)
où sen
trouve la taille de la collection etm
le nombre d'identifiants passés?Dans cette liste de codes se trouve le tableau des identifiants dans la collection d'utilisateurs
var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"] .find({ _id: {$in : list}})
la source
Parce que mongodb utilise
bson
et pour bson est des types d'attributs importants. et parce_id
est queObjectId
vous devez utiliser comme ceci:db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
et en cours d'
mongodb compass
utilisation comme ceci:{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Remarque: objectId dans la chaîne a une
24
longueur.la source
si vous voulez rechercher par utilisateur et aussi par un autre champ comme conditionnellement, vous pouvez facilement le faire comme ci-dessous avec un opérateur étalé et ternaire en utilisant
aggregate
etmatch
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), }, },
la source
Ceci n'est pas lié à la requête mongo. J'étais familier avec SQL et j'ai utilisé Studio3T IDE pour interroger une base de données mongo en utilisant SQL. Si vous êtes comme moi, je tiens à souligner que la valeur de l'identifiant doit être transtypée. La requête ressemblera donc à:
SELECT _id from <collectionName> WHERE _id = ObjectId("5883d387971bb840b7399130");
la source