返回数组元素包含所有输入数组值的文档| MongoDB



我有一个练习集:

[
{
"name": "Push Ups",
"muscleGroups": ["Chest", "Shoulders", "Abs", "Biceps"]
},
{
"name": "Sit Ups",
"muscleGroups": ["Abs"]
},
{
"name": "Pull Ups",
"muscleGroups": ["Abs", "Biceps", "Back"]
}
]

inputMuscleGroups的输入数组。我试图将练习过滤到文档的muscleGroups数组具有inputMuscleGroups的每个元素的地方。

对于inputMuscleGroups = ["Abs"],每个文档都会返回。

对于inputMuscleGroups = ["Abs", "Biceps"],输出将是:

[
{
"name": "Push Ups",
"muscleGroups": ["Chest", "Shoulders", "Abs", "Biceps"]
},
{
"name": "Pull Ups",
"muscleGroups": ["Abs", "Biceps", "Back"]
}
]

对于inputMuscleGroups = ["Abs", "Shoulders", "Chest"],输出将是:

[
{
"name": "Push Ups",
"muscleGroups": ["Chest", "Shoulders", "Abs", "Biceps"]
}
]

我已经玩了$in,但它似乎只有在任何输入数组匹配任何文档数组时才返回true。

理想情况下,我希望在.find()方法中完成此操作,而不是在.aggregate()方法中。

您可以简单地使用$all

db.collection.find({
muscleGroups: {
$all: [
"Abs",
"Biceps"
]
}
})

Working Mongo playground

相关内容

  • 没有找到相关文章