首页 > 解决方案 > 为视图链接 3 种类型的文档

问题描述

创建视图时,我正在为链接文档而苦苦挣扎。

一个销售人员有多个客户,每个客户都有多个购买。

我需要获得一个包含以下内容的视图:

每个客户购买的销售人员 ID。

在关系数据库中,我将加入:

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" }

我试过阅读很多东西,但没有任何点击。我将如何在视图中执行此操作?

标签: viewcouchdb

解决方案


{
   _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”开头的所有文档以获取采购文档数组。然后,每份采购文件都会告诉您销售人员是谁。根据销售人员的数量,您可能已经拥有所需的一切,假设您的销售 ID 到名称的映射已经在内存中。

如果没有,您可以进行进一步查找(并可能缓存该结果)。如果该内存查找或额外查找对您不起作用,您还可以在采购文档中复制销售人员的姓名。毕竟,NoSQL DB 不遵循与关系 DB 相同的规则,并且可以不时复制。您只需要考虑以后如何保持 dup 同步。

如果您可以使用和滥用 ID 字段并在没有视图的情况下离开,那么您可能会过得更好。观点带来了自己的一系列问题。祝你好运!


推荐阅读