【问题标题】:How to implement self join in COSMOS db container如何在 COSMOS db 容器中实现自连接
【发布时间】:2020-08-11 09:06:59
【问题描述】:

我们在具有父子关系的容器中有文档,如果我传递内部文件夹 id(FolderId = 3),我想加入这些项目,它也应该返回所有父项。

项目 1 { “文件夹 ID”:“1”, "FolderName": "文件夹 1", “父文件夹 ID”:空 }

第 2 项 { “文件夹 ID”:“2”, "FolderName": "文件夹 2", “父文件夹 ID”:1, }

第 3 项 { “文件夹 ID”:“3”, "FolderName": "文件夹 3", “父文件夹 ID”:2, }

【问题讨论】:

    标签: azure-cosmosdb azure-cosmosdb-sqlapi


    【解决方案1】:

    您基本上是在尝试在不支持的 Cosmos DB 中加入多个文档。您要么需要改变创建文档的方式,将所有父子关系放在一个文档中,要么通过任何 SDK 获取客户端的所有文档,然后通过代码应用逻辑。

    更多详情请参考以下链接:

    1. CosmosDB Join (SQL API)
    2. https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6611247-support-cross-document-joins

    【讨论】:

    • 是的,我们可以在单个文档中拥有,但内部子文件夹可以添加 n 次,它可能会超出最大文档大小并且每次都需要更新单个文档。有没有更好的办法。
    • 所以目前 Cosmos db 中的最大文档大小是 2 MB,这本身就足够大了,但它仍然可以像您提到的那样被跨越,并且需要不断更新,以防您想在同一个文档中添加更多内容。在这种情况下,最好的方法可能是在客户端检索结果并以任何想要的方式进行操作。
    猜你喜欢
    • 2021-08-26
    • 2020-11-29
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2021-06-13
    • 2015-01-18
    • 2019-04-30
    相关资源
    最近更新 更多