Estaba navegando por Couchbase foros y me encontré con una pregunta acerca de las consultas contra los datos de matriz en Couchbase. Viniendo de una base de datos relacional, yo también luché una vez para entender el concepto de consulta de datos JSON con formato complejo con SQL.

¿Cómo se consulta dentro de estos documentos NoSQL incrustados? Existen numerosas formas, ninguna de las cuales es especialmente difícil. Vamos a examinar algunas de las posibilidades de consulta complejas.

En caso de que tenga curiosidad sobre la pregunta con la que tropecé, se puede encontrar aquí. El usuario quería saber cómo consultar objetos anidados en una matriz para un único documento. El modelo de documento propuesto era similar al siguiente:

El objetivo final era poder obtener cada objeto en una consulta basada en un DONDE que incluía la condición anidada tipo propiedad.

Una forma de hacerlo es escribir una consulta N1QL parecida a la siguiente:

En la consulta anterior estamos realizando una SELECCIONE desde un Bucket Couchbase llamado foro y aplanando la matriz mediante la función UNNEST palabra clave. Antes de aplicar la palabra clave DONDE estado:

En DONDE nos devolverá un único resultado en lugar de dos, donde el único resultado es de tipo juegos según nuestra consulta.

¿Es ésta la única manera de conseguir lo que acabamos de hacer? Por supuesto que no.

Tomemos la siguiente consulta N1QL:

En la consulta anterior no estamos aplanando primero el array en Couchbase con un UNNEST operación. En su lugar estamos utilizando uno de los operadores de recogida para encontrar elementos de la matriz que cumplan nuestros criterios.

¿Hay otras maneras de hacer el trabajo? Por supuesto que las hay, pero estas dos deberían ser suficientes para empezar cuando se trata de consultar arrays en Couchbase con N1QL y la aplicación UNNEST palabra clave.

Si necesitas más ayuda con N1QL, consulta la página Portal para desarrolladores de Couchbase para ver otros ejemplos.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

2 Comentarios

  1. [...] un artículo reciente, escribí sobre aplanar y consultar arrays en Couchbase usando N1QL. Ese artículo fue inspirado por una pregunta popular en los foros de Couchbase. Después de publicar el [...]

  2. ericbalawejder enero 31, 2023 a 12:35 pm

    ¿Hay alguna forma de anidar estos resultados en una matriz? Por ejemplo:

    {
    "id": "order-1",
    "tipo": "orden",
    "items": [
    {
    "id": "pokemon-azul",
    "tipo": "juego",
    "Nombre": "Pokemon Azul"
    }
    ]
    }

Dejar una respuesta