MongoDB отображает большой набор данных - PullRequest
0 голосов
/ 30 октября 2018

Мне поручено (эффективно) сопоставление / преобразование заданного массива объектов в значения, хранящиеся в коллекции MongoDB, и я изо всех сил пытался найти лучший способ сделать это. Схема документа коллекции следующая:

{
  value: {
    type: String,
    unique: true,
    required: true,
    minLength: 1
  },
  translation: {
    type: String,
    required: true,
    minLength: 1
  },
  mapping: {
    type: Map,
    of: String
  }
}

Примером документа будет:

{
  value: "ex",
  translation: "example",
  mapping: {
    "0":"No examples",
    "1":"One example"
  }
}
{
  value: "sp",
  translation: "sample",
  mapping: {
    "0":"No samples",
    "1":"One sample"
  }
}

Полученные данные являются массивом объектов:

[{"name": "ex", "value": "0"}, {"name": "sp", "value": "1"}]

То, что нужно вернуть (после сопоставления), выглядит примерно так:

[{"name": "example", "value": "No examples"}, {"name": "sp", "value": "One sample"}]

Я придумал несколько способов добиться этого:

  1. Создайте запрос MongoDB findOne для каждого объекта во входном массиве и, если он найден, сопоставьте значения с данными в базе данных.
  2. Создайте один запрос MongoDB для поиска всех необходимых документов, зацикливание результатов и сопоставьте значения во входном массиве с найденными в документах.
  3. Создать запрос MongoDB, который находит все необходимые документы, а также отображает значения в значения БД

Очевидно, вариант 1 не так уж и хорош. Я хотел бы получить помощь в определении лучшего плана действий. Например, возможно ли вообще создать один запрос MongoDB, который находит все документы И возвращает правильное значение БД, соответствующее атрибуту «value» во входных данных (опция 3)?

Или я должен использовать другой подход к проблеме?

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