Возврат выбранного объекта JSON из метода поиска Монго - PullRequest
0 голосов
/ 18 ноября 2018

Вот пример JSON

Пример JSON:

[
  {
    "_id": "123456789",
    "YEAR": "2019",
    "VERSION": "2019.Version",
    "QUESTION_GROUPS": [
      {
        "QUESTIONS": [
          {
            "QUESTION_NAME": "STATE_CODE",
            "QUESTION_VALUE": "MH"
          },
          {
            "QUESTION_NAME": "COUNTY_NAME",
            "QUESTION_VALUE": "IN"
          }
        ]
      },
      {
        "QUESTIONS": [
          {
            "QUESTION_NAME": "STATE_CODE",
            "QUESTION_VALUE": "UP"
          },
          {
            "QUESTION_NAME": "COUNTY_NAME",
            "QUESTION_VALUE": "IN"
          }
        ]
      }
    ]
  }
]

Запрос, который использую:

db.collection.find({},
{
  "QUESTION_GROUPS.QUESTIONS.QUESTION_NAME": "STATE_CODE"
})

Моё требование - получить занововсе QUESTION_VALUE , чье QUESTION_NAME равно STATE_CODE .

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Звучит так, как будто вы хотите развернуть массивы и получить только значения вопроса назад

Попробуйте это

db.collection.aggregate([
{
  $unwind: "$QUESTION_GROUPS"
},
{
  $unwind: "$QUESTION_GROUPS.QUESTIONS"
},
{
  $match: {
    "QUESTION_GROUPS.QUESTIONS.QUESTION_NAME": "STATE_CODE"
  }
},
{
  $project: {
    "QUESTION_GROUPS.QUESTIONS.QUESTION_VALUE": 1
  }
}
])
0 голосов
/ 18 ноября 2018

Если я вас поправлю, то вы пытаетесь сделать что-то вроде:

db.collection.find(
{
   "QUESTION_GROUPS.QUESTIONS.QUESTION_NAME": "STATE_CODE"
},
{
   "QUESTION_GROUPS.QUESTIONS.QUESTION_VALUE": 1
})

Внимание: вы получите ВСЕ «QUESTION_VALUE» для ЛЮБОГО документа, который имеет QUESTION_GROUPS.QUESTIONS.QUESTION_NAME сэто значение.

Внимание 2: Вы также получите _Id.Это по умолчанию.

Если вы хотите пропустить эти проблемы, вам может понадобиться использовать Агрегации и размотать «QUESTION_GROUPS» -> «ВОПРОСЫ».Таким образом, вы можете пропустить как несущественные результаты, так и поле _id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...