我有这样一个数据 struct

{
    "level1": [
        {
            "id": 1,
            "level2": [
                [
                    {
                        "id": 1
                    },
                    {
                        "id": 2
                    },
                    {
                        "id": 5
                    }
                ],
                [
                    {
                        "id": 3
                    },
                    {
                        "id": 4
                    }
                ]
            ]
        }
    ]
}

如何通过find()操作符获取id为3的元素? level2总是有两个数组

我试过这个--model.find({ 'level1.level2.$[i].$[j].id': 3 }),但不起作用

推荐答案

由于level2是由数组组成的数组,因此您可以使用:

db.collection.find({
  "level1.level2": {$elemMatch: {$elemMatch: {id: 3}}}
})

以找到相关文件. 看看它在playground example号公路上是如何工作的

Node.js相关问答推荐

无法验证叶签名|无法验证第一个证书

如何使用jq将依赖项添加到package.json中

Sass-TypeError:无法读取未定义的属性(正在读取';indexOf';)

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

Indexeddb 获取所有不同于特定值的记录

如何在mongodb中获取对象数组内部的数据

如何从名字,中间名,姓氏中获取全名并在结果中搜索匹配?

如何在不使用位置运算符 $ 的情况下更新 mongodb 文档中数组中的嵌套文档?

tsc:当我上传 React+next js 和 node 项目时,在 heroku 找不到

NodeJs 过滤掉目录异步

解决并行保存到 mongodb

如何在 mongoDB 中用值 0 填充缺失的文档?

使用 grunt 服务器,如何将所有请求重定向到根 url?

在 Express-js 中使用路由

AWS Kinesis 中的分区键是什么?

ISODate 未定义

运行摩卡+伊斯坦布尔+通天塔

TypeError:请求路径包含未转义的字符,我该如何解决这个问题

Google Firebase 错误(函数返回未定义、预期的 Promise 或值)