MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb $in contra um campo de objetos de array em vez de objetos de array


Você precisa extrair os campos "location" de sua matriz de entrada e alimentá-los para $in :
var locs = arr.map(function(x) { return x.location } );
db.collection.find({ "fieldx": { "$in": locs } })

Para referência aqui, vou reescrever sua pergunta para você:

Eu tenho uma coleção que contém documentos como este:
{ "fieldx": "NY" }
{ "fieldx": "LA" }
{ "fieldx": "SF" }

O que eu tenho é um array de entrada que é definido assim:
var arr = [
    { "name": "foo", "location": "NY"},
    { "name": "bar", "location": "LA"},
    { "name": "foobar", "location": "NZ"}
];

Agora eu quero escrever uma consulta para encontrar todos os documentos que correspondem ao campo "localização" na matriz que tenho para entrada.

Como eu faço isso?

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

Mas isso não combina.