我有一个包含食谱的文档集,如下所示:
{
"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"}}
]
}
但是我无法让它发挥作用。任何帮助表示赞赏!
答案 0 :(得分:3)
这个怎么样:
FMT
编辑(感谢@BlakesSeven):
编写上述内容的较短方法是使用$all
运算符。
db.recipe.find({
"$and": [
{ "ingredients.name": "Butter" },
{ "ingredients.name": "Flour" }
]
})