{"id":4756,"date":"2018-03-09T12:06:43","date_gmt":"2018-03-09T20:06:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4756"},"modified":"2025-06-13T17:32:48","modified_gmt":"2025-06-14T00:32:48","slug":"new-querying-features-couchbase-server","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/","title":{"rendered":"Nuevas funciones de consulta en Couchbase Server 5.5"},"content":{"rendered":"<div class=\"paragraph\">\n<p>Las nuevas funciones de consulta ocupan un lugar destacado en la \u00faltima versi\u00f3n de Couchbase Server 5.5. Echa un vistazo a <a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-couchbase-server-5-5\/\">el anuncio<\/a> y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/\">desc\u00e1rguese la versi\u00f3n gratuita ahora mismo<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>En esta entrada, quiero destacar algunas de las nuevas funciones y mostrarte c\u00f3mo empezar a utilizarlas:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>ANSI JOINs - N1QL en Couchbase ya tiene JOIN, pero ahora JOIN es m\u00e1s compatible con los est\u00e1ndares y m\u00e1s flexible.<\/li>\n<li>Uniones HASH: el rendimiento de determinados tipos de uniones puede mejorarse con una uni\u00f3n HASH (s\u00f3lo en Enterprise Edition).<\/li>\n<li>Agregaci\u00f3n pushdowns - GROUP BY puede ser empujado hacia el indexador, mejorando el rendimiento de la agregaci\u00f3n (s\u00f3lo en Enterprise Edition)<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Todos los ejemplos de este post utilizan el bucket \"travel-sample\" que viene con Couchbase.<\/em><\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_ansi_joins\">UNIONES ANSI<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Hasta Couchbase Server 5.5, los JOINs eran posibles, con dos advertencias:<\/p>\n<\/div>\n<div class=\"olist arabic\">\n<ol class=\"arabic\">\n<li>Un lado del JOIN tiene que ser clave(s) de documento<\/li>\n<li>Debe utilizar el <code>EN TECLAS<\/code> sintaxis<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">\n<p>En Couchbase Server 5.5, ya no es necesario utilizar <code>EN TECLAS<\/code>por lo que escribir joins resulta mucho m\u00e1s natural y m\u00e1s acorde con otros dialectos de SQL.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_previous_join_syntax\">Sintaxis JOIN anterior<\/h3>\n<div class=\"paragraph\">\n<p>Por ejemplo, aqu\u00ed est\u00e1 la sintaxis antigua:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT r.destinationairport, r.sourceairport, r.distance, r.airlineid, a.name\r\nFROM `muestra-de-viaje` r\r\nJOIN `viaje-muestra` a ON KEYS r.airlineid\r\nWHERE r.type = 'ruta\r\nAND r.sourceairport = 'CMH'\r\nORDER BY r.distance DESC\r\nLIMIT 10;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Esto obtendr\u00e1 10 rutas que comienzan en el aeropuerto CMH, unidas con sus correspondientes documentos de aerol\u00edneas. Los resultados est\u00e1n abajo (los estoy mostrando en vista de tabla, pero sigue siendo JSON):<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10201-ansi-join-table-view.png\" alt=\"ANSI join results\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_new_join_syntax\">Nueva sintaxis JOIN<\/h3>\n<div class=\"paragraph\">\n<p>Y aqu\u00ed est\u00e1 la nueva sintaxis haciendo lo mismo:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT r.destinationairport, r.sourceairport, r.distance, r.airlineid, a.name\r\nFROM `muestra-de-viaje` r\r\nJOIN `viaje-muestra` a ON META(a).id = r.airlineid\r\nWHERE r.type = 'ruta\r\nAND r.sourceairport = 'CMH'\r\nORDER BY r.distance DESC\r\nLIMIT 10;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>La \u00fanica diferencia es el <code>EN<\/code>. En lugar de <code>EN TECLAS<\/code>Ahora es <code>ON  =<\/code>. Es m\u00e1s natural para los que proceden de un entorno relacional (como yo).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Pero eso no es todo. Ahora ya no est\u00e1s limitado a unirte s\u00f3lo a claves de documentos. He aqu\u00ed un ejemplo de <code>\u00daNASE A<\/code> en un campo de la ciudad.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT a.airportname, a.city AS airportCity, h.name AS hotelName, h.city AS hotelCity, h.address AS hotelAddress\r\nFROM `muestra-de-viaje` a\r\nINNER JOIN `muestra-de-viaje` h ON h.ciudad = a.ciudad\r\nWHERE a.type = 'aeropuerto\r\nAND h.type = 'hotel'\r\nLIMIT 10;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Esta consulta mostrar\u00e1 los hoteles que coincidan con los aeropuertos en funci\u00f3n de su ciudad.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10202-ansi-join-on-fields.png\" alt=\"ANSI join on fields\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Tenga en cuenta que para que esto funcione, debe tener un \u00edndice creado en el campo que est\u00e1 en el lado interno del JOIN. El bucket \"muestra-viaje\" ya contiene un \u00edndice predefinido en el campo ciudad. Si lo intentara con otros campos, obtendr\u00eda un mensaje de error como \"No index available for ANSI join term...\".<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Para m\u00e1s informaci\u00f3n sobre ANSI JOIN, consulte la p\u00e1gina <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/join.html\">documentaci\u00f3n completa de N1QL JOIN<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Nota: La antigua sintaxis JOIN, ON KEYS seguir\u00e1 funcionando, as\u00ed que no se preocupe por tener que actualizar su antiguo c\u00f3digo.<\/em><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_hash_joins\">Uniones Hash<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Debajo de las cubiertas, hay diferentes formas en las que se pueden llevar a cabo los joins. Si ejecutas la consulta anterior, Couchbase utilizar\u00e1 un <strong>Bucle anidado (NL)<\/strong> para ejecutar la uni\u00f3n. Sin embargo, tambi\u00e9n puedes instruir a Couchbase para que use un m\u00e9todo <strong>uni\u00f3n hash<\/strong> en su lugar. A veces, un hash join puede ser m\u00e1s eficaz que un bucle anidado. Adem\u00e1s, una uni\u00f3n hash no depende de un \u00edndice. Sin embargo, s\u00ed depende de que la uni\u00f3n sea s\u00f3lo de igualdad.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Por ejemplo, en \"travel-sample\", podr\u00eda unir puntos de referencia con hoteles en sus campos de correo electr\u00f3nico. Puede que no sea la mejor forma de averiguar si un hotel es un punto de referencia, pero como el correo electr\u00f3nico no se indexa por defecto, es ilustrativo.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT l.name AS landmarkName, h.name AS hotelName, l.email AS landmarkEmail, h.email AS hotelEmail\r\nFROM `muestra-de-viaje` l\r\nINNER JOIN `muestra-de-viaje` h ON h.email = l.email\r\nWHERE l.type = 'punto de referencia'\r\nAND h.type = 'hotel';<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>La consulta anterior tardar\u00e1 mucho tiempo en ejecutarse y probablemente se agote.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_syntax\">Sintaxis<\/h3>\n<div class=\"paragraph\">\n<p>A continuaci\u00f3n probar\u00e9 con un hash join, que debe invocarse expl\u00edcitamente con una directiva <code>USAR HASH<\/code> insinuar.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT l.name AS landmarkName, h.name AS hotelName, l.email AS landmarkEmail, h.email AS hotelEmail\r\nFROM `viaje-muestra` l\r\nINNER JOIN `travel-sample` h USE HASH(BUILD) ON h.email = l.email\r\nWHERE l.type = 'landmark'\r\nAND h.type = 'hotel';<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Un hash join tiene dos lados: un <code>CONSTRUIR<\/code> y un <code>SONDA<\/code>. En <code>CONSTRUIR<\/code> de la uni\u00f3n se utilizar\u00e1 para crear una tabla hash en memoria. La direcci\u00f3n <code>SONDA<\/code> utilizar\u00e1 esa tabla para encontrar coincidencias y realizar la uni\u00f3n. Normalmente, esto significa que desea que la tabla <code>CONSTRUIR<\/code> que se utilizar\u00e1 en el menor de los dos conjuntos. Sin embargo, s\u00f3lo se puede proporcionar una sugerencia de hash, y s\u00f3lo para el lado derecho de la uni\u00f3n. Por tanto, si especifica <code>CONSTRUIR<\/code> en el lado derecho, entonces est\u00e1 utilizando impl\u00edcitamente <code>SONDA<\/code> en el lado izquierdo (y viceversa).<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_build_and_probe\">CONSTRUIR y SONDEAR<\/h3>\n<div class=\"paragraph\">\n<p>Entonces, \u00bfpor qu\u00e9 utilic\u00e9 <code>HASH(CONSTRUIR)<\/code>?<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Lo s\u00e9 por usar <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/infer.html\"><code>INFER<\/code><\/a> y\/o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/tools\/query-workbench.html#bucket-analyzer\">Ideas para cubos<\/a> que los puntos de referencia representan aproximadamente 10% de los datos, y los hoteles alrededor de 3%. Adem\u00e1s, s\u00e9 por haberlo probado que <code>HASH(CONSTRUIR)<\/code> era ligeramente m\u00e1s lento. Pero en cualquier caso, el tiempo de ejecuci\u00f3n de la consulta era de milisegundos. Resulta que hay dos pares hotel-landmark con la misma direcci\u00f3n de correo electr\u00f3nico.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/10205-hash-join-results\/\" alt=\"Hash join results\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><code>USAR HASH<\/code> le dir\u00e1 a Couchbase que <em>intente<\/em> un hash join. Si no puede hacerlo (o si est\u00e1s usando Couchbase Server Community Edition), volver\u00e1 a un nested-loop. (Por cierto, puedes especificar expl\u00edcitamente nested-loop con la opci\u00f3n <code>USO NL<\/code> pero actualmente no hay ninguna raz\u00f3n para hacerlo).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Para m\u00e1s informaci\u00f3n, consulte <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/join.html#use-hash-hint\">Uni\u00f3n HASH<\/a> \u00e1reas de la documentaci\u00f3n.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_aggregate_pushdowns\">Flexiones agregadas<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Las agregaciones en el pasado han sido complicadas cuando se trata de rendimiento. Con Couchbase Server 5.5, <em>flexiones agregadas<\/em> son ahora compatibles con <code>SUM, COUNT, MIN, MAX y AVG<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>En versiones anteriores de Couchbase, la indexaci\u00f3n no se utilizaba para sentencias que implicaban <code>GRUPO POR<\/code>. Esto podr\u00eda afectar gravemente al rendimiento, porque hay un paso extra de \"agrupaci\u00f3n\" que tiene que tener lugar. En Couchbase Server 5.5, el servicio de \u00edndices puede hacer la agrupaci\u00f3n\/agregaci\u00f3n.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_example\">Ejemplo<\/h3>\n<div class=\"paragraph\">\n<p>He aqu\u00ed un ejemplo de consulta que busca el n\u00famero total de hoteles y los agrupa por pa\u00eds, estado y ciudad.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT pa\u00eds, estado, ciudad, COUNT(1) AS total\r\nFROM `viajes-muestra\r\nWHERE type = 'hotel' and country is not null\r\nGROUP BY pa\u00eds, estado, ciudad\r\nORDER BY COUNT(1) DESC;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>La consulta se ejecutar\u00e1 y devolver\u00e1 como resultado:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10203-aggregate-result.png\" alt=\"Aggregation result\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Echemos un vistazo al plan de consulta visual (s\u00f3lo disponible en la edici\u00f3n Enterprise, pero puede ver el texto sin procesar del plan en la edici\u00f3n Community).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10204-query-plan-no-pushdown.png\" alt=\"Query plan with no pushdown\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Tenga en cuenta que el \u00fanico \u00edndice que se utiliza es para el <code>tipo<\/code> campo. El paso de agrupaci\u00f3n realiza el trabajo de agregaci\u00f3n. Con el conjunto de datos de muestras de viajes relativamente peque\u00f1o, esta consulta tarda unos 90 ms en mi escritorio de nodo \u00fanico. Pero veamos qu\u00e9 ocurre si a\u00f1ado un \u00edndice a los campos por los que estoy agrupando:<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_indexing\">Indexaci\u00f3n<\/h3>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">CREATE INDEX ix_hotelregions ON `travel-sample` (country, state, city) WHERE type='hotel';<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Ahora, ejecute lo anterior <code>SELECCIONE<\/code> de nuevo. Deber\u00eda devolver los mismos resultados. Pero..:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>Ahora tarda ~7ms en mi escritorio de nodo \u00fanico. Nosotros tardamos ms, pero con un conjunto de datos grande y m\u00e1s realista, es una diferencia de magnitud enorme.<\/li>\n<li>El plan de consulta es diferente.<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/03\/10205-query-plan-with-pushdown.png\" alt=\"Query plan with pushdown\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>N\u00f3tese que esta vez no hay paso de \"grupo\". Todo el trabajo se transfiere al servicio de \u00edndices, que puede utilizar la funci\u00f3n <strong>ix_hotelregiones<\/strong> \u00edndice. Puede utilizar este \u00edndice porque mi consulta coincide exactamente con los campos del \u00edndice.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>El \"push down\" del \u00edndice no siempre se produce: su consulta tiene que cumplir unas condiciones espec\u00edficas. Para m\u00e1s informaci\u00f3n, consulte la p\u00e1gina <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/groupby-aggregate-performance.html\">Rendimiento de GROUP BY y agregado<\/a> \u00e1reas de la documentaci\u00f3n.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_summary\">Resumen<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Con <a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-couchbase-server-5-5\/\">Servidor Couchbase 5.5<\/a>N1QL incluye a\u00fan m\u00e1s sintaxis conforme a los est\u00e1ndares y es m\u00e1s eficaz que nunca.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Prueba N1QL hoy mismo. Usted puede <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/\">instalar Enterprise Edition<\/a> o <a href=\"https:\/\/developer.couchbase.com\/tutorials\">prueba N1QL directamente en tu navegador<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u00bfTiene alguna pregunta? Estoy en <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>. Tambi\u00e9n puede consultar <a href=\"https:\/\/twitter.com\/N1QL\">@N1QL en Twitter<\/a>. En <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/c\/sql\/16\/\">Foro N1QL<\/a> es un buen lugar al que acudir si tiene preguntas en profundidad sobre N1QL.<\/p>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Las nuevas funciones de consulta ocupan un lugar destacado en la \u00faltima versi\u00f3n de Couchbase Server 5.5. Echa un vistazo al anuncio y descarga la versi\u00f3n de forma gratuita ahora mismo. En este post, quiero destacar algunas de las nuevas caracter\u00edsticas y mostrar [...]<\/p>","protected":false},"author":71,"featured_media":4757,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1812],"tags":[2258,2173,2041,2182,1759],"ppma_author":[8937],"class_list":["post-4756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-n1ql-query","tag-5-5","tag-aggregates","tag-aggregation","tag-devbuild","tag-hash"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>New Querying Features in Couchbase Server 5.5 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"New querying features figure prominently in the latest release of Couchbase Server. ANSI JOINs, HASH joins, aggregate pushdowns are covered in this post.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New Querying Features in Couchbase Server 5.5\" \/>\n<meta property=\"og:description\" content=\"New querying features figure prominently in the latest release of Couchbase Server. ANSI JOINs, HASH joins, aggregate pushdowns are covered in this post.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-09T20:06:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:32:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1056\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"New Querying Features in Couchbase Server 5.5\",\"datePublished\":\"2018-03-09T20:06:43+00:00\",\"dateModified\":\"2025-06-14T00:32:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/\"},\"wordCount\":1124,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg\",\"keywords\":[\"5.5\",\"aggregates\",\"aggregation\",\"devbuild\",\"hash\"],\"articleSection\":[\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/\",\"name\":\"New Querying Features in Couchbase Server 5.5 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg\",\"datePublished\":\"2018-03-09T20:06:43+00:00\",\"dateModified\":\"2025-06-14T00:32:48+00:00\",\"description\":\"New querying features figure prominently in the latest release of Couchbase Server. ANSI JOINs, HASH joins, aggregate pushdowns are covered in this post.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg\",\"width\":1920,\"height\":1056,\"caption\":\"Question marks, querying from https:\/\/pixabay.com\/en\/question-mark-important-sign-1872665\/\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New Querying Features in Couchbase Server 5.5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nuevas funciones de consulta en Couchbase Server 5.5 - El blog de Couchbase","description":"Las nuevas caracter\u00edsticas de consulta ocupan un lugar destacado en la \u00faltima versi\u00f3n de Couchbase Server. ANSI JOINs, HASH joins, pushdowns agregados son cubiertos en este post.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/","og_locale":"es_MX","og_type":"article","og_title":"New Querying Features in Couchbase Server 5.5","og_description":"New querying features figure prominently in the latest release of Couchbase Server. ANSI JOINs, HASH joins, aggregate pushdowns are covered in this post.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/new-querying-features-couchbase-server\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-03-09T20:06:43+00:00","article_modified_time":"2025-06-14T00:32:48+00:00","og_image":[{"width":1920,"height":1056,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"New Querying Features in Couchbase Server 5.5","datePublished":"2018-03-09T20:06:43+00:00","dateModified":"2025-06-14T00:32:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/"},"wordCount":1124,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg","keywords":["5.5","aggregates","aggregation","devbuild","hash"],"articleSection":["Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/","url":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/","name":"Nuevas funciones de consulta en Couchbase Server 5.5 - El blog de Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg","datePublished":"2018-03-09T20:06:43+00:00","dateModified":"2025-06-14T00:32:48+00:00","description":"Las nuevas caracter\u00edsticas de consulta ocupan un lugar destacado en la \u00faltima versi\u00f3n de Couchbase Server. ANSI JOINs, HASH joins, pushdowns agregados son cubiertos en este post.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/03\/102-hero-query.jpg","width":1920,"height":1056,"caption":"Question marks, querying from https:\/\/pixabay.com\/en\/question-mark-important-sign-1872665\/"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/new-querying-features-couchbase-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"New Querying Features in Couchbase Server 5.5"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","first_name":"Matthew","last_name":"Groves","user_url":"https:\/\/crosscuttingconcerns.com","author_category":"","description":"A Matthew D. Groves le encanta programar.  No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa.  Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa.  Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores.  Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4756"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/4757"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=4756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4756"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}