【发布时间】:2020-05-04 11:38:47
【问题描述】:
你好,我有这样的物品:
parent : { partitionKey:"pk", id="xx" }
children : { partitionKey:"pk", id="yy", parentId="xx" }
我想返回一个这样的对象
{ partitionKey:"a", id="xx", children: [{ partitionKey:"a", id="yy", parent-id="xx" },.. ] }
我可以像这样得到孩子和父母:
SELECT * FROM pk a where a.id= "xx"
SELECT * FROM pk a where a.parentId= "xx"
试过了
SELECT *, (SELECT * FROM pk a where a.parentId= "xx") as children FROM pk a where a.id= "xx"
但它在 , 附近返回语法错误,
【问题讨论】:
-
我有点困惑,因为我不太确定您要查询的数据是什么形状。但是我在您的问题中确实注意到,您的集合和子数组的别名不正确。在这里看看这篇文章,我认为这个文档中的示例将为您提供您正在寻找的示例,docs.microsoft.com/en-us/azure/cosmos-db/…希望对您有所帮助。
-
你好@MarkBrown 谢谢你的链接。我已经读过了,但我的风格不理解“来自”部分? “from c”似乎来自容器,“from a”似乎来自分区?数据的形状是基本的,假设具有名称、id、partitionkey 属性的项目和具有名称、id、partitionkey 和对父 parentId 的引用的子项的无限列表。在一天结束时,我想获得嵌入父母的孩子名单。我看到了 ARRAY 关键字,但它似乎只对价值起作用
-
您不会在 Cosmos 中为分区设置别名。 “From c”只是一种引用底层容器的方法,因此您可以为那些在 where 子句中或将被投影的属性提供别名。对于子查询,您也引用路径和别名。也许这篇文章会对你有更多帮助。总的来说,如果您是 Cosmos 的新手,我建议您阅读 Query 文档,由于分层数据,在 JSON 数据上编写查询与 SQL 不同。 docs.microsoft.com/en-us/azure/cosmos-db/sql-query-join.
标签: azure azure-cosmosdb azure-cosmosdb-sqlapi