Запрос MongoDB и выберите внутренний объект - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу запросить внутренний объект и выбрать только отфильтрованные внутренние объекты из документа 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 с данными о пружине в моем приложении.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Наконец-то я смог найти запрос.Сначала я должен раскрутиться и применить критерии соответствия.это была работа для меня.

db.{mycollection}.aggregate(
    [
        { $unwind: '$schools.students'}, 
        { $match : { "schools.students.class" : 1 } }, 
        { $project : { "schools.name" : 1, 'schools.students' : 1 }  } 
    ] 
);
0 голосов
/ 19 декабря 2018

Вы можете искать поиск во вложенной записи массива mongo db.Пример кода здесь. Документ находится здесь.

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

Если вы хотите, чтобы студенты делали плоскую карту для ваших результатов. Вот документ для плоской карты в mongodb

...