2010-07-22 6 views
27

Comment puis-je interroger les smoothies qui contiennent des pommes? (Ci-dessous est une collection avec 3 documents)Interroger des éléments de tableau avec 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 

    ) 

Répondre

47

Si vous exécutez simplement la requête ci-dessous MongoDB est assez intelligent pour comprendre ce que vous essayez de faire. Mongo verra que les ingrédients sont une liste et ne retournera que les documents qui contiennent "apple" dans cette liste.

+1

merci beaucoup, ne pense que ce serait QUE facile xD – Gigala

-5

Pourquoi les utilisateurs écrivent-ils des applications évolutives pour les smoothies?

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

+2

nous les aimons :) – Devrim

+5

C'est une requête invalide. La valeur $ in doit être un tableau. Par exemple: '' '{" ingredient ": {$ in: [" pomme "," cannelle "," sucre "]}}' '' Permet de tester si le champ d'ingrédient contient l'une des 3 valeurs listées . –

-2

De l'documentation:

Note: Les champs contenant des tableaux correspondent aux opérateurs conditionnels, si un seul élément correspond.

Par conséquent, la requête suivante:

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

correspondra à un document qui contient le champ suivant:

{ field: [-1,3] }

Questions connexes