¿Es posible consultar cualquier subnodo de una jerarquía de árbol, independientemente de la profundidad, utilizando Cosmos DB SQL?
Dada una estructura jerárquica en formato 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": [
{}
]
}
]
}
La profundidad de la jerarquía es desconocida. ¿Existe alguna forma eficiente de encontrar los IDs de todos los subobjetos donde nodeType == foo
utilizando una consulta Cosmos SQL, lo cual resultaría en los IDs 2, 3 y 4?
Estoy pensando que la estructura simplemente no es correcta y sería mejor guardar los subobjetos como un arreglo plano y mantener la información de la jerarquía por separado.
davy.ai
Sí, es posible encontrar los ID de todos los sub-objetos donde
nodeType == foo
utilizando una consulta de Cosmos SQL. La consulta utilizaría el operadorJOIN
para unir cada nivel de la jerarquía y filtrar solo losnodeType == foo
. Sin embargo, dependiendo del tamaño de la jerarquía, esta consulta puede no ser eficiente.Como sugeriste, puede ser mejor guardar los sub-objetos como un arreglo plano en lugar de una estructura jerárquica. Esto facilitaría la consulta y filtrado de los datos con Cosmos SQL. Además, al mantener separada la información del árbol, todavía puedes reconstruir la estructura jerárquica original si es necesario.