view - 为视图链接 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" }
我试过阅读很多东西,但没有任何点击。我将如何在视图中执行此操作?
解决方案
{
_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 字段并在没有视图的情况下离开,那么您可能会过得更好。观点带来了自己的一系列问题。祝你好运!
推荐阅读
- r - 如何在 tmap 中指定多面板布局两侧的标签?
- twilio - 无法从 Twilio Studio 创建任务
- java - 错误:对重载定义的模糊引用,Scala 中的 ND4J
- python - Python for Maya - 滑块换色器
- java - 获取请求适用于 POSTMAN,但在我的 Java 应用程序中引发垃圾响应
- tsql - 如何在 Sql server 中使用作业计划运行顺序作业
- python - Python 单元测试 flask_restful - RequestParser
- angular - Angular - 如何根据垫选择下拉显示文本/字符串/日期类型
- ios - 在 Swift 中从自定义包中加载颜色资源
- python - 如何根据数组绘制图像?