Как получить список идентификаторов, доступных в объектах подмассива - PullRequest
0 голосов
/ 05 декабря 2018

Сообщество StackOverflow, у меня есть проблема, похожая на этот чувак Как получить только список идентификаторов объектов JSON?

, но мне нужно сделать это с запросом MongoDB, потому что мне нужнодля запроса большого количества данных.

У меня есть 1 объект, подобный этому:

{ 
"_id": ObjectId(".."),
"data": 
 [

    {
      customId : 22,
      customArr:[
           321,
           123
      ]
    },
    {
      customId : 33,
      customArr:[
           123
      ]
    },
    {
      customId : 22,
      customArr:[
      ]
    }
 ]
}

(ofc есть больше данных, но для этого важно только это) Проблема: я незнать, как получить списки, подобные этому:

[22, 33]

и

[123, 321]

Мне нужны эти списки для вычисления моих данных, но в настоящее время я абсолютно не в состоянии что-либо вычислить.Я не могу изменить свою структуру, потому что я уже накопил МНОГО данных в этом формате, и это повредило бы все мое приложение.

Я использую MongoDB 3.4, поэтому все агрегатные обновления 3.2 можно использовать, но я могуне заставить его работать.

Может кто-нибудь связать мне документацию, которую я должен прочитать, чтобы иметь возможность выполнить эту задачу?Или дать какие-нибудь подсказки о функциях MongoDB, которые мне нужны для этого?

спасибо за вашу помощь в Advance, я опубликую свое решение, если найду один

1 Ответ

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

Вы можете использовать ниже агрегации

db.collection.aggregate([
  { "$project": {
    "customId": { "$setUnion": "$data.customId" },
    "customArr": {
      "$reduce": {
        "input": "$data",
        "initialValue": [],
        "in": { "$setUnion": ["$$this.customArr", "$$value"] }
      }
    }
  }}
])
...