2010-07-22 58 views
27

我该如何查询其中有苹果的圆滑的人? (下面是3个文件的集合)用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 

    ) 

回答

47

如果你只需要运行下面的查询MongoDB是足够聪明弄清楚你想要做什么。

{ ingredients: "apple" } 

蒙戈会看到成分是列表,只返回包含“苹果”,在列表中的某些文件所在。

+1

非常感谢,也没有想这将是这很容易xD – Gigala 2013-05-03 06:53:32

-5

为什么人们会为冰沙制作可伸缩的应用程序?

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

+2

我们爱他们:) – Devrim 2011-05-22 07:02:08

+5

这是一个无效的查询。 $ in值必须是一个数组。例如: '''“成分”:{$ in:[“apple”,“cinnamon”,“sugar”]}} 将测试成分字段是否包含列出的3个值中的一个。 – 2012-04-17 05:41:18

-2

documentation

注:含阵列字段匹配条件运算符,如果只有一个 项匹配

因此,下面的查询:

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

将匹配包含 以下领域的文档:

{ field: [-1,3] }