sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb $in contra un campo de objetos de matriz en lugar de objetos de matriz

Debe extraer los campos de "ubicación" de su matriz de entrada y enviarlos a $in :

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

Como referencia aquí voy a volver a escribir su pregunta para usted:

Tengo una colección que contiene documentos como este:

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

Lo que tengo es una matriz de entrada que se define así:

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

Ahora quiero escribir una consulta para encontrar todos los documentos que coincidan con el campo "ubicación" en la matriz que tengo para la entrada.

¿Cómo hago eso?

He probado:

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

Pero eso no coincide.