2010-07-22 15 views
27

Wie kann ich die Smoothies abfragen, die Apple in ihnen haben? (Unten ist eine Sammlung mit 3 Einträge)Array-Elemente mit Mongo abfragen

_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 

    ) 

Antwort

47

Wenn Sie einfach das unten stehende Abfrage ausführen MongoDB ist intelligent genug, um herauszufinden, was Sie versuchen zu tun.

Mongo wird sehen, dass Zutaten ist eine Liste und nur Dokumente, die "Apfel" enthalten einige in dieser Liste enthalten.

+1

Dank viel, ahnte nicht, es wäre DAS einfach xD – Gigala

-5

Warum schreiben Menschen skalierbare Anwendungen für Smoothies?

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

+2

wir lieben sie :) – Devrim

+5

Das ist eine ungültige Abfrage. Der $ in Wert muss ein Array sein. Zum Beispiel: '' '{" Zutat ": {$ in: [" Apfel "," Zimt "," Zucker "]}}' '' würde prüfen, ob das Zutatenfeld einen der 3 aufgeführten Werte enthält . –

-2

Vom documentation:

Hinweis: Die Felder Arrays entsprechen bedingte Operatoren, wenn nur ein Artikel paßt enthalten.

Daher ist die folgende Abfrage:

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

Wird ein Dokument entsprechen, das die folgende Feld enthält:

{ field: [-1,3] }