是否可以使用 Cosmos 的 DB SQL 查询树层次结构的任何子节点,而不考虑深度?
Is it possible to query any sub node of a tree hierarchy, irresponsive of depth, using Cosmos' DB SQL?
给定分层 JSON 结构:
{
id = 1,
text = "Root",
children = [
{
id = 2,
nodeType = "foo",
children = [
{
{
id = 3,
nodeType = "foo",
children = [
{
}
]
},
{
id = 6,
nodeType = "bar",
children = [
{
}
]
}
}
]
},
{
id = 4,
nodeType = "foo",
children = [
{
}
]
}
]
}
层次结构的深度未知。使用 Cosmos SQL 查询,是否有一种(高效的)方法来查找所有子对象的 ID,其中 nodeType == foo
,这将导致 ID 2、3 和 4?
我认为结构不对,我最好将子对象保存为平面数组并将树信息分开。
as @Mark Bwown 在评论区,没有好的或最好的方法满足您的要求。发帖帮助其他社区成员。
唯一推荐的方法是只查询根,将其反序列化为动态类型,然后在代码中遍历它以检查非空类型或非空数组。
虽然它没有直接回答您关于在 CosmosDB 上使用 Azure SQL 执行此操作的问题。我建议你使用cosmosdb支持的mongo api。这为您提供了子节点数据的完整功能过滤。
这里的例子:https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb/tutorial-query-mongodb
给定分层 JSON 结构:
{
id = 1,
text = "Root",
children = [
{
id = 2,
nodeType = "foo",
children = [
{
{
id = 3,
nodeType = "foo",
children = [
{
}
]
},
{
id = 6,
nodeType = "bar",
children = [
{
}
]
}
}
]
},
{
id = 4,
nodeType = "foo",
children = [
{
}
]
}
]
}
层次结构的深度未知。使用 Cosmos SQL 查询,是否有一种(高效的)方法来查找所有子对象的 ID,其中 nodeType == foo
,这将导致 ID 2、3 和 4?
我认为结构不对,我最好将子对象保存为平面数组并将树信息分开。
as @Mark Bwown 在评论区,没有好的或最好的方法满足您的要求。发帖帮助其他社区成员。
唯一推荐的方法是只查询根,将其反序列化为动态类型,然后在代码中遍历它以检查非空类型或非空数组。
虽然它没有直接回答您关于在 CosmosDB 上使用 Azure SQL 执行此操作的问题。我建议你使用cosmosdb支持的mongo api。这为您提供了子节点数据的完整功能过滤。 这里的例子:https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb/tutorial-query-mongodb