首页 > 解决方案 > MongoDB查询并选择内部对象

问题描述

我想查询内部对象并从 mongoddb 文档中只选择过滤的内部对象。

考虑下面的 mongodb 文档。

{
  "schools": [
    {
      "name": "ABC",
      "students": [
        {
          "name": "ABC 1",
          "class": 1
        },
        {
          "name": "ABC 2",
          "class": 2
        },
        {
          "name": "ABC 3",
          "class": 1
        }
      ]
    },
    {
      "name": "XYZ",
      "students": [
        {
          "name": "XYZ 1",
          "class": 1
        },
        {
          "name": "XYZ 2",
          "class": 2
        }
      ]
    }
  ]
}

我只想选择 1 班的学生。预期结果 json 如下。

{
  "school": {
    "name": "ABC",
    "students": [
      {
        "name": "ABC 1",
        "class": 1
      },
      {
        "name": "ABC 3",
        "class": 1
      }
    ]
  },
  "school": {
    "name": "XYZ",
    "students": [
      {
        "name": "XYZ 1",
        "class": 1
      }
    ]
  }
}

即使低于结果对我来说也很好。

{
  "students": [
    {
      "name": "ABC 1",
      "class": 1
    },
    {
      "name": "ABC 3",
      "class": 1
    },
    {
      "name": "XYZ 1",
      "class": 1
    }
  ]
}

请帮我完成这件事。如果可以提供 mongodb 查询真的很有帮助。我在我的应用程序中使用 mongodb 和 spring 数据。

标签: javamongodbmongodb-queryaggregation-frameworkspring-data-mongodb

解决方案


您可以搜索 mongo db 数组嵌套记录搜索。示例代码在这里。文件在这里。

db.your_collection_name.find({'school.student.class':1})

如果您只希望学生为您的结果做平面图。这是 mongodb 中 flatmap 的文档


推荐阅读