获取包含数组

时间:2015-07-30 14:03:54

标签: node.js mongodb mongodb-query

我有一个包含食谱的文档集,如下所示:

{
    "title" : "Pie",
    "url" : "pie.png",
    "people" : "4",
    "ingredients" : [
        {
            "amount" : "150",
            "measure" : "g",
            "name" : "Butter"
        },
        {
            "amount" : "200",
            "measure" : "g",
            "name" : "Flour"
        }
    ],
    "_id" : ObjectId("55acf33223ae282719bdc9b7")
}

我试图创建一个查询,检索包含多个字段的所有文档,例如“butter”和“flour”。

我设法检索包含一个字段的文档,如下面的查询:

db.recipe.find(
    {"ingredients.name": "Butter"}, 
    {"_id": 1, "ingredients": {"$elemMatch": {"name": "Butter"}}},        
    callback
);

我尝试过使用

{ 
    $all: [
        { $elemMatch: { name: "Butter" }}, 
        { $elemMatch:{ name: "Flour"}}
    ]
}

但是我无法让它发挥作用。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

这个怎么样:

FMT
编辑(感谢@BlakesSeven):

编写上述内容的较短方法是使用$all运算符。

db.recipe.find({ 
    "$and": [
        { "ingredients.name": "Butter" }, 
        { "ingredients.name": "Flour" }
    ]
})