Mongodb $ unwind массив массивов в массиве - PullRequest
1 голос
/ 07 мая 2020

Драйвер MongoDB: 4.2.6, Пн goose: ^ 5.9.6

Я хочу раскрутить свойства ключевых слов:

[
 {
    "_id": null,
    "totalNumberOfData": 4,
    "data": [
        {
            "numberOfData": 2,
            "sentiment": "Good",
            "keyword": [
                "A",
                "B",
                "C"
            ]
        }
    ]
  }
]

Я пробовал это, но не получилось работа.

{
    $unwind: {
      path: "$data.keyword",
      preserveNullAndEmptyArrays: true,
    },
  },

Как раскрутить массив ключевых слов?

1 Ответ

0 голосов
/ 07 мая 2020

Как правило, входными данными для стадии $unwind должен быть массив. Поскольку вы выполняете data.keyword раскручивание, ожидается, что поле с именем data как объект с вложенным полем с именем keyword в виде массива, например: {data : keyword : []} и он не может найти его таким образом, что приводит к пустому массиву в качестве результата агрегирования. Поскольку data также является массивом, вам нужно сначала его размотать, поэтому в вашем случае требуется двойная размотка:

db.collection.aggregate([
  {
    $unwind: {
      path: "$data",
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $unwind: {
      path: "$data.keyword",
      preserveNullAndEmptyArrays: true
    }
  }
])

Тест: mongoplayground

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