返回文档,其中数组元素包含输入数组的所有值 | MongoDB
Posted
技术标签:
【中文标题】返回文档,其中数组元素包含输入数组的所有值 | MongoDB【英文标题】:Return document where array element includes all values of input array | MongoDB 【发布时间】:2021-10-02 01:25:25 【问题描述】:我有一个练习集:
[
"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()
方法中。
【问题讨论】:
【参考方案1】:您可以简单地使用$all
db.collection.find(
muscleGroups:
$all: [
"Abs",
"Biceps"
]
)
工作Mongo playground
【讨论】:
谢谢!完美的。如果它嵌套在一个对象中呢?我似乎无法让它工作:Mongo Playground 在这种情况下,您需要使用聚合以上是关于返回文档,其中数组元素包含输入数组的所有值 | MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。