在mongoDb中对嵌入式文档数组(3个级别)进行过滤查询

无病毒的

我有一组图表。每个图都有几个块。每个块都有几个端口,它们本身具有多个对象作为字段。到目前为止,我只能在块上应用$filter$group达到第1级。我无法根据某些条件过滤端口。

文件结构为:图

[
  {
    "_id": "1",
    "blocks": [
      {
        "port": [
          {
            "portType": {
              "function": "input"
            }
          }
        ]
      }
    ]
  }
]

我试图做到的,是让里面有所有端口的列表input作为portType.function从集合

db.collection.aggregate([{$project:{"blocks.ports":{$filter:{input:"$blocks.ports",as:"ports",cond:{$in:["input","$$ports.portType.function"]}}}}}]);

预期输出:list<Ports>portType.function作为输入。

实际输出:返回所有至少具有一个端口作为“输入”的文档以及所有其他端口。

塞子

如果你想要的清单Port对象,你应该使用双$unwind阶段,然后$match进行blocks.port.portType.function最后只提取使用的端口$project阶段

db.collection.aggregate([
  {
    "$unwind": "$blocks"
  },
  {
    "$unwind": "$blocks.port"
  },
  {
    "$match": {
      "blocks.port.portType.function": "input"
    }
  },
  {
    $project: {
      _id: 0,
      portType: "$blocks.port.portType",
    }
  }
])

如果您的Port对象包含其他要提取的字段,例如Foo,则只需在$project阶段中添加这些字段,例如

$project: {
    _id: 0,
    portType: "$blocks.port.portType",
    foo: "$blocks.port.foo"
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB嵌入式文档数组:仅获取一个具有特定属性的嵌入式文档

Mongoid:基于嵌入式文档数组的大小查询

MongoDB $ project嵌入式文档到根级别

查询嵌入式文档数组给出错误答案

基于范围查询MongoDB中嵌入式文档的数组

MongoDB查询以查找多个嵌入式文档

复杂查询猫鼬-嵌入式文档数组

将嵌入式文档数组转换为mongoDB中的元素数组

查询Spring Data MongoDB中嵌入式文档的数组

MongoDB查询-聚合和嵌入式文档

MongoDB嵌入式文档的区别和过滤器

嵌入式文档数组中的MongoDB Aggregate ObjectId

MongoDB $ project将嵌入式文档与另一个文档中的其他字段一起置于根级别

如何在嵌入式数组mongodb中查询嵌入式文档

使用Presto查询MongoDB嵌入式/嵌套文档的数组

MongoDB:与查询不匹配的嵌入式文档

MongoDB嵌入式文档自我查询

查询MongoDB中的嵌入式文档

在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

春季查询嵌入式文档的数组

php:将mongodb嵌入式文档查询到数组中

如何在MongoDB中查询数组中的单个嵌入式文档?

在mongodb中展开嵌入式文档

使用C#在MongoDB集合中的嵌入式文档的子句查询中的投影

如何查询Mongodb的嵌入式数组

在数组的同一嵌入式文档中使用$ and两个条件查询

如何对嵌入式文档进行汇总查询?

如何在 MongoDb 中查询嵌入式文档?

Hibernate repo 查询以访问 mongodb 嵌入式文档

TOP 榜单

热门标签

归档