Querying array elements with Mongo
Asked Answered
L

3

27

How can I query the smoothies that have apple in them? (below is a collection with 3 documents)

_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

    )
Lenz answered 22/7, 2010 at 11:5 Comment(0)
H
47

If you simply run the below query MongoDB is smart enough to figure out what you're trying to do.

{ ingredients: "apple" }

Mongo will see that ingredients is a list and only return documents that contain "apple" some where in that list.

Handicap answered 22/7, 2010 at 12:42 Comment(0)
C
-2

From the documentation:

Note: Fields containing arrays match conditional operators, if only one item matches.

Therefore, the following query:

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

Will match a document that contains the following field:

{ field: [-1,3] }

Cranage answered 24/1, 2013 at 9:27 Comment(0)
C
-6

Why do people write scalable applications for smoothies?

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

Conduction answered 6/5, 2011 at 15:38 Comment(1)
That is an invalid query. The $in value must be an array. For example: {"ingredient": {$in: ["apple","cinnamon","sugar"]}} Would test whether the ingredient field contains one of the 3 listed values.Boat

© 2022 - 2024 — McMap. All rights reserved.