单个嵌入文档中的 Cosmos DB SQL 查询
Cosmos DB SQL query in single embed document
我正在使用 Cosmos DB,我想编写一个 SQL 查询,该查询 return 在一个嵌入文档中包含多个文档。
为了详细说明,假设您在一个容器中有以下两种文档类型。 Order文档的OrderId在OrderDetail文档中有引用。
1.Order
{
"OrderId": "31d4c08b-ee59-4ede-b801-3cacaea38808",
"Name": "ABC",
"Type": "Order",
"DeptName": "ABC",
"TotalAmount": 100.05
}
2.OrderDetail
{
"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" return 一个数组中 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 sqls,其中一个产生:
{"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.
中完成这样的过程
我正在使用 Cosmos DB,我想编写一个 SQL 查询,该查询 return 在一个嵌入文档中包含多个文档。
为了详细说明,假设您在一个容器中有以下两种文档类型。 Order文档的OrderId在OrderDetail文档中有引用。
1.Order
{
"OrderId": "31d4c08b-ee59-4ede-b801-3cacaea38808",
"Name": "ABC",
"Type": "Order",
"DeptName": "ABC",
"TotalAmount": 100.05
}
2.OrderDetail
{
"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" return 一个数组中 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 sqls,其中一个产生:
{"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.
中完成这样的过程