Как сопоставить различные внешние источники данных с единой моделью в MongoDB?

У меня есть коллекция документов с заданным набором свойств, которых ожидает мой код. Однако мне нужно заполнить эту коллекцию данными из различных источников данных, которые имеют совершенно разные свойства (или поля). Это потребует некоторой формы отображения поля.

Есть много способов сделать это:

  1. Извлеките данные на моем прикладном уровне, перенесите их в правильный формат, а затем сбросьте в Монго (это кажется крайне неэффективным).
  2. Скопируйте данные непосредственно во временную коллекцию в Mongo, затем выполните итерации по каждому документу, выполните сопоставление полей и, наконец, сохраните их в правильной коллекции (это кажется лучшим подходом, но все же неудобным).
  3. То же, что и в варианте 2, но для отображения поля используется функция карты (или аналогичная функция) (это, кажется, хороший выбор, но единственное, что я нахожу, связано с уменьшением карты, которое, как мне кажется, не является правильный метод для этой задачи).
  4. Реализовать шаблон отображения данных, но я также не могу найти никаких ресурсов по этому поводу (это было бы моим предпочтительным решением, чтобы полностью отделить приложение от персистентного уровня).

Что ты предлагаешь?

Уточнение: я использую Laravel (PHP). Шаги 1 будут все на уровне приложения, в то время как шаги 2 и 3 могут быть реализованы с помощью сценариев Монго.

Пояснение Обновление: данные извлекаются через Curl, а затем сохраняются. Идея создания дампа прямо в базу данных состоит в том, чтобы ускорить извлечение данных и не перегружать сервер (сценарий 1). Варианты 2 и 3 разгрузят сопоставление на уровень базы данных, что должно быть намного более эффективным, так как не должно быть сетевого трафика на сопоставленный документ. Я полагаю, что это действительно сводится к тому, существует ли вариант 4, и если нет, я могу прибегнуть к вариантам с 1 по 3 или их разумной комбинации (возможно, отображение на уровне базы данных, когда документ хранится на уровне приложения).

0 ответов

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