2010-07-22 24 views
27

¿Cómo puedo consultar los batidos que tienen manzana en ellos? (A continuación es una colección con 3 documentos)Consultar elementos de la matriz con Mongo

_id => 1 
name => 'best smoothie' 
ingredients => Array 
    (
     [0] => apple 
     [1] => raspberry 
     [2] => orange 
     [3] => banana 
    ) 
_id => 2 
name => 'summer smoothie' 
ingredients => Array 
    (
     [0] => lemon 
     [1] => mint 

    ) 
_id => 3 
name => 'yogurt smoothie' 
ingredients => Array 
    (
     [0] => apple 
     [1] => blueberry 

    ) 

Respuesta

47

Si simplemente ejecuta la consulta a continuación MongoDB es lo suficientemente inteligente como para saber lo que estás tratando de hacer.

{ ingredients: "apple" } 

Mongo verá que los ingredientes son una lista y solo devuelve documentos que contengan "manzana" en algún lugar de la lista.

+1

muchas gracias, no supongo que sería ESO fácil xD – Gigala

-5

¿Por qué las personas escriben aplicaciones escalables para batidos?

db.find ({"ingredients": {$ in: "apple"}});

+2

los amamos :) – Devrim

+5

Esa es una consulta no válida. El valor $ en debe ser una matriz. Por ejemplo: '' '{" ingrediente ": {$ en: [" apple "," canela "," azúcar "]}}' ' Se probará si el campo de ingredientes contiene uno de los 3 valores enumerados . –

-2

Desde el documentation:

Nota: Los campos que contienen matrices coinciden con los operadores condicionales, si sólo hay un elemento coincide con .

Por lo tanto, la siguiente consulta:

db.collection.find({ field: { $gt:0, $lt:2 } });

coincidirá con un documento que contiene el campo siguiente:

{ field: [-1,3] }

Cuestiones relacionadas