【问题标题】:Cosmosdb create and object with properties from sub queryCosmosdb 使用来自子查询的属性创建和对象
【发布时间】: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


【解决方案1】:

也许这使用查询:

select (select * from p where p.id = "xx") as parent ,(select * from p where p.parentId ="xx") as child from p 

并通过代码将所有子元素组合为一个数组将是一种解决方法。

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2014-03-19
    • 2021-11-08
    • 2021-05-16
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多