MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongodb $in contre un champ d'objets de tableau au lieu d'objets de tableau

Vous devez extraire les champs "location" de votre tableau d'entrée et les envoyer à $in :

var locs = arr.map(function(x) { return x.location } );
db.collection.find({ "fieldx": { "$in": locs } })

Pour référence ici, je vais réécrire votre question pour vous :

J'ai une collection qui contient des documents comme celui-ci :

{ "fieldx": "NY" }
{ "fieldx": "LA" }
{ "fieldx": "SF" }

Ce que j'ai est un tableau d'entrée qui est défini comme ceci :

var arr = [
    { "name": "foo", "location": "NY"},
    { "name": "bar", "location": "LA"},
    { "name": "foobar", "location": "NZ"}
];

Maintenant, je veux écrire une requête pour trouver tous les documents qui correspondent au champ "emplacement" dans le tableau que j'ai en entrée.

Comment faire ?

J'ai essayé :

db.collection.find({ "fieldx": { "$in": arr } })

Mais cela ne correspond pas.