Связывание 3 типов документов для просмотра - PullRequest
0 голосов
/ 07 ноября 2018

Я борюсь со связанными документами при создании представления.

Продавец имеет несколько клиентов, каждый клиент имеет несколько покупки.

Мне нужно получить представление, содержащее:

идентификаторы продавца для каждой покупки клиента.

В реляционной базе данных я бы присоединился:

purchase.clientid -> client._id
                     client.salesperson -> salesperson._id

Дано:

{ _id: "1", type: "purchase", clientid: "2", items: [] }
{ _id: "2", type: "client", salespersonid: "3", name: "Chris the client" }
{ _id: "3", type: "salesperson", name: "Simon the salesperson" }

Я много чего пробовал читать, но ничего не щелкнуло. Как бы я сделал это в представлении?

1 Ответ

0 голосов
/ 09 ноября 2018
{
   _id: 'purchase-client-2-<unique-purchase-id>',
   salespersonId: 'sales-3'
}

{
   _id: 'sales-3',
   name: 'Simon the salesperson'
}

{
   _id: 'client-2',
   name: 'Chris the client'
}

С помощью вышеуказанных документов вы можете запросить все документы, начинающиеся с 'purchase-client2', чтобы получить массив документов покупки. Затем каждый документ о покупке сообщает вам, кем был продавец. В зависимости от количества торгового персонала у вас уже может быть все, что вам нужно, если предположить, что ваша карта с идентификатором продаж уже есть в памяти.

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

Если вы можете использовать и использовать поле идентификатора и использовать его без просмотра, тогда вам может быть лучше. Взгляды приносят свои проблемы. Удачи!

...