1
votes

Comment interroger les documents qui contiennent un champ à partir d'une clé donnée dans un tableau d'objet?

Mon code d'origine

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];

J'obtiens simplement les résultats par

User.find({
  _id: {$in: users}
});

Si je change une variable users code > à

const users = ["019e1c71","19e1c72a", "1b215900"];

Comment obtenir les résultats contenant _id donné dans le tableau de l'objet?


3 Réponses :



1
votes

En supposant que vous sachiez que c'est toujours _id:

    const users = [{_id: "019e1c71"}, {_id2: "19e1c72a"}, {_id3: "1b215900"}];

    let query = { $or: users }
    console.log(query);

ou en supposant que les clés peuvent être différentes:

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];

let query = { _id: { $in: users.map(x => x._id) } };
console.log(query);


2 commentaires

J'ai une question Si les clés sont fixées à _id quelle méthode est la meilleure?


Je préférerais $ in alors la requête est plus simple



1
votes

L'opérateur $ ou prend un tableau de documents, qui est exactement ce que vous avez.

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];
User.find({$or: users});


1 commentaires

Merci! J'ai mal compris l'opération $ ou pendant longtemps. C'est un moyen très simple d'obtenir les résultats.