MongoDB: запускать агрегирование в нескольких базах данных - PullRequest
0 голосов
/ 23 октября 2019

У меня есть много баз данных, каждая из которых содержит данные для каждого клиента.

Есть ли способ запустить Aggregate, который поразит несколько баз данных? Я хочу запустить $group для полного набора данных.

В качестве обходного пути я помещаю данные из обоих DBs во временную коллекцию, а затем запускаю $group поверх этоговременная коллекция.

Есть ли лучший способ для этого? Я открыт для использования любых других технологий!

1 Ответ

0 голосов
/ 24 октября 2019

Невозможно заставить конвейер агрегации работать одновременно с несколькими базами данных. Агрегация MongoDB может выполнить $lookup между коллекциями, чтобы выполнить объединение, но это степень, в которой возможно объединение внешних данных. К сожалению, объединение данных вручную - объединение необработанных данных в одну коллекцию для выполнения одной агрегации или объединение результатов нескольких агрегаций - является единственным вариантом, доступным вам, если вы продолжаете использовать существующую архитектуру.

Если вы измените архитектуру своей базы данных так, чтобы она содержала все данные о клиентах в одной базе данных, и ограничил доступ, например, на основе поля customerId, то можно было бы выполнить агрегирование всех данных о клиентах одновременно без каких-либо дополнительных усилий. Однако в существующем виде ваша существующая архитектура просто не будет работать для этого.

...