database - 单个嵌入文档中的 Cosmos DB SQL 查询

标签 database azure azure-sql-database azure-cosmosdb azure-cosmosdb-sqlapi

我正在使用 Cosmos DB,我想编写一个 SQL 查询,在一个嵌入文档中返回多个文档。

为了详细说明,假设您在一个容器中有以下两种文档类型。 Order文档的OrderId在OrderDetail文档中有引用。

1.订单

{ 
    "OrderId": "31d4c08b-ee59-4ede-b801-3cacaea38808", 
    "Name": "ABC", 
    "Type": "Order", 
    "DeptName": "ABC", 
    "TotalAmount": 100.05 
} 

2.订单详情

{ 
    "OrderDetailId": "689bdc38-9849-4a11-b856-53f8628b76c9", 
    "OrderId": "31d4c08b-ee59-4ede-b801-3cacaea38808", 
    "Type": "OrderDetail", 
    "ItemNo": 202, 
    "Quantity": 10, 
    "UnitPrice": 10.05 
}, 

{ 
    "OrderDetailId": "789bdc38-9849-4a11-b856-53f8628b76c9", 
    "OrderId": "31d4c08b-ee59-4ede-b801-3cacaea38808", 
    "Type": "OrderDetail", 
    "ItemNo": 200, 
    "Quantity": 11, 
    "UnitPrice": 15.05 
} 

我想编写一个查询,根据引用 OrderId="31d4c08b-ee59-4ede-b801-3cacaea38808"在一个数组中返回 OrderDetail 的所有条目

输出应如下所示

{
   "OrderId":"31d4c08b-ee59-4ede-b801-3cacaea38808",
   "Name":"ABC",
   "Type":"Order",
   "OrderDetail":[
      {
         "OrderDetailId":"689bdc38-9849-4a11-b856-53f8628b76c9",
         "Type":"OrderDetail",
         "ItemNo":202,
         "Quantity":10,
         "UnitPrice":10.05
      },
      {
         "OrderDetailId":"789bdc38-9849-4a11-b856-53f8628b76c9",
         "Type":"OrderDetail",
         "ItemNo":200,
         "Quantity":11,
         "UnitPrice":15.05
      }
   ]
}

我不知道如何在 Cosmosdb 中查询以获得上述结果。

最佳答案

您想要的输出应该应用于关系数据库,Cosmos db 是非关系数据库,不适合您的场景。据我所知,没有查询sql可以直接产生以上输出。

我建议你执行 2 个 sql,其中一个生成:

{"OrderId":"31d4c08b-ee59-4ede-b801-3cacaea38808",
   "Name":"ABC",
   "Type":"Order"}

其他产品产生:

"OrderDetail":[
      {
         "OrderDetailId":"689bdc38-9849-4a11-b856-53f8628b76c9",
         "Type":"OrderDetail",
         "ItemNo":202,
         "Quantity":10,
         "UnitPrice":10.05
      },
      {
         "OrderDetailId":"789bdc38-9849-4a11-b856-53f8628b76c9",
         "Type":"OrderDetail",
         "ItemNo":200,
         "Quantity":11,
         "UnitPrice":15.05
      }
   ]

然后将它们组合起来。当然,您可以在 Stored Procedure 中执行此过程。 .

关于database - 单个嵌入文档中的 Cosmos DB SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307250/

相关文章:

azure-sql-database - 通过 Azure 简单代码中的 WebJob 访问 SQL 数据库

azure-sql-database - 通过 Management Studio 连接到 SQL Azure

database - 什么是 "multi point triggers"?

MongoDB:可以将不同的数据库放在不同的驱动器上吗?

php - 根据另一个表的匹配结果从一个表中选择行

在 ADF 管道中找不到 Azure Batch 链接服务

asp.net - 我的 Azure 网站和 SQL 数据库之间有 45 秒的延迟

Azure 应用服务 API 用户注册功能

azure - 数据未分布在 Azure SQL 数据仓库中的 60 个节点上

sql-server - 访问 Azure 数据库 - 防火墙问题