我正在构建一个简单的食谱应用程序,用于实践,我有一个包含所有食谱及其成分的集合:
{
"_id": "640a5f1fa99f441f56e0996c",
"schema": 0,
"userId": "640a46b8b9447ba3c4832c3d",
"name": "banana smoothie",
"ingredients": [
{
"name": "banana",
"qty": 2,
"unit": "unit"
},
{
"name": "milk",
"qty": 1,
"unit": "cup"
}
]
}
现在,我尝试构建一个查询,它将允许我找到用我现有的配料可以制作的所有食谱。
例如:
1.如果我只有香蕉,我就做不了香蕉冰沙(少了牛奶)
1.如果我有香蕉、牛奶和苹果,查询应返回Banana Smoothie
到目前为止,我有这样的东西:
find({'ingredients.name': {$all:['banana', 'milk']}, ingredients: {$size:2}})
这将找到所有含有香蕉和牛奶的食谱,而不是其他的,但是对于我的示例中的案例2,这将失败。
提前感谢您的帮助!
1条答案
按热度按时间hjzp0vay1#
当使用
$all
时,需要数组ingredients.name
包含['banana', 'milk', 'apple']
的所有值,因此对于您的情况,应该使用$setIsSubset
Mongo Playground