Как я могу получить правильный результат запроса в MongoDB (специально вложенный массив)?

Я догадался, что когда я запускаю этот запрос MongoDB, я могу получить только отфильтрованные данные port_code 'http_https', но это не так. Все данные выбраны. Как я могу исправить свой запрос? Не могли бы вы дать мне несколько руководств?

Запрос

{'port_info': {'$elemMatch': {'port_code': 'http_https'}}}

Документы

[{
  "_id": {
    "$oid": "6267a966fe9fa7f41d42d255"
  },
  "new_yn": "Y",
  "port_info": [
    {
      "ip_port": "199.20.93.164:80",
      "use_yn": "Y",
      "comment": "",
      "port_code": "http_https",
      "uri_info": [
        {
          "uri": "199.20.93.164/",
          "status_code": 404
        }
      ]
    },
    {
      "ip_port": "199.20.93.164:5985",
      "use_yn": "Y",
      "comment": "",
      "port_code": "http_https",
      "uri_info": [
        {
          "uri": "199.20.93.164:5985",
          "status_code": 200
        }
      ]
    },
    {
      "ip_port": "199.20.93.164:21 ",
      "use_yn": "Y",
      "comment": "",
      "port_code": "ftp"
    }
  ]
}]
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать фильтр:

db.collection.aggregate([
  {
    $project: {
      port_info: {
        $filter: {
          input: "$port_info",
          as: "item",
          cond: {$eq: ["$$item.port_code", "http_https"]}
        }
      }
    }
  }
])

Как вы можете видеть на пример этой детской площадки

Спасибо за помощь. Как я могу сделать эти запросы? Я думал, что этот проект только для использования полей получения.

Bethlee 10.05.2022 13:45

Я не понимаю вопроса "Как я могу сделать эти запросы?" Вы можете уточнить? $project — это способ форматирования ваших документов. $filter — это способ их форматирования.

nimrod serok 10.05.2022 14:27

Спасибо за объяснение. Я имею в виду... Я изо всех сил пытаюсь сделать запрос в MongoDB. Вот почему написал эту фразу.

Bethlee 13.05.2022 02:49

Другие вопросы по теме