我有一个练习集:
[
{
"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