{"id":1865,"date":"2015-01-17T03:01:15","date_gmt":"2015-01-17T03:01:15","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1865"},"modified":"2025-06-13T23:49:53","modified_gmt":"2025-06-14T06:49:53","slug":"n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/","title":{"rendered":"Vista previa de la compatibilidad de N1QL DP4 con Couchbase .NET SDK 2.0."},"content":{"rendered":"<p>Ayer, el equipo de consultas de Couchbase lanz\u00f3 la tan esperada N1QL Developer Preview 4. Si no has o\u00eddo hablar de N1QL, se trata de un nuevo lenguaje de consulta tipo SQL que Couchbase est\u00e1 desarrollando para realizar consultas en almacenes de datos no relacionales como Couchbase. El objetivo es llevar la familiaridad de SQL al mundo flexible y sin esquemas de JSON. Hoy publicamos un \"avance\" del soporte para N1QL DP4 proporcionado por el SDK .NET 2.0 de Couchbase.<\/p>\n<p>\u00a1Lo que significa que estamos proporcionando un pre-lanzamiento, no probado, no se ejecutan en la versi\u00f3n de producci\u00f3n del SDK que incluye gran parte de la funcionalidad proporcionada por el N1QL DP4! Perm\u00edtanme decirlo una vez m\u00e1s: <strong>\u00a1\u00a1\u00a1\u00a1NO UTILIZAR EN PRODUCCI\u00d3N!!!! <\/strong>Ahora que la polic\u00eda de la diversi\u00f3n ha tenido su paz y ha arruinado la fiesta, \u00a1vamos a lo que hay en N1QL DP4 y lo que actualmente es compatible con esta versi\u00f3n preliminar del SDK!<\/p>\n<h2>\u00bfQu\u00e9 contiene N1QL Developer Preview 4?<\/h2>\n<p>N1QL DP4 se basa en el gran trabajo entregado en DP's 1-3, entregando la sintaxis completa y el lenguaje de elementos N1QL. Adicionalmente, provee sub-consultas, soporte experimental para construcciones de Lenguaje de Manipulaci\u00f3n de Datos (DML) como INSERT, UPDATE, UPSERT, y DELETE, y lo m\u00e1s importante para el SDK, \u00a1una API REST completamente nueva!<\/p>\n<p>La API REST ha recibido un importante lavado de cara y est\u00e1 mucho m\u00e1s cerca de estar lista para el prime time.  La nueva API REST incluye una lista parcial de funciones:<\/p>\n<ul>\n<li>Compatibilidad con sentencias preparadas (una especie de cach\u00e9 de plan de consulta)<\/li>\n<li>Par\u00e1metros posicionales y nominales<\/li>\n<li>Una API de errores mejorada y m\u00e1s robusta<\/li>\n<li>M\u00e9tricas de consulta<\/li>\n<li>Tiempos de espera de las consultas<\/li>\n<\/ul>\n<p>Por \u00faltimo, se ha renovado y actualizado la documentaci\u00f3n, que puede consultarse en <a href=\"https:\/\/docs.couchbase.com\/prebuilt\/n1ql\/n1ql-dp4\/N1QLRef-DP4.pdf\" target=\"_blank\">aqu\u00ed<\/a>.<\/p>\n<h2>Instalaci\u00f3n de DP4<\/h2>\n<p>Desafortunadamente, aunque N1QL DP4 est\u00e1 casi completamente integrado con Couchbase Server, todav\u00eda no est\u00e1 empaquetado con \u00e9l. Lo que esto significa es que para usar DP4, tendr\u00e1s que descargar los bits e iniciar el servicio y asociarlo con una instancia de Couchbase Server. Afortunadamente hacer esto es relativamente f\u00e1cil:<\/p>\n<ul>\n<li>Primero, descarga N1QL DP4 <a href=\"https:\/\/www.couchbase.com\/blog\/es\/nosql-databases\/downloads\/#PreRelease\" target=\"_blank\">aqu\u00ed<\/a>.<\/li>\n<li>A continuaci\u00f3n, descompr\u00edmelo en un directorio de tu disco duro<\/li>\n<li>Por \u00faltimo, ejecute el siguiente comando para iniciar el servicio y asociarlo a una instancia de Couchbase Server: .cbq-engine -datastore=https:\/\/[nombre_servidor]:8091\/<\/li>\n<\/ul>\n<p>Una vez que hayas hecho esto (por supuesto cambia [nombre del servidor] para que sea una IP a tu instancia de Couchbase, necesitar\u00e1s crear un \u00edndice para cada bucket que desees utilizar. Para ello, puedes ejecutar la herramienta de l\u00ednea de comandos de consulta interactiva y crear los \u00edndices con ella, o puedes descargar el SDK .NET 2.0 de Couchbase con la \"vista previa\" de N1QL DP4. Mostrar\u00e9 primero c\u00f3mo hacerlo con la shell interactiva y m\u00e1s tarde mostrar\u00e9 c\u00f3mo hacerlo program\u00e1ticamente con el SDK.<\/p>\n<ul>\n<li>Navegue hasta el directorio donde descomprimi\u00f3 el N1QL DP4 y escriba lo siguiente, cambiando los caracteres <couchbase-query-engine-server-name> con su instancia del servidor Couchbase: .cbq -engine=https:\/\/<couchbase-query-engine-server-name>:8093\/<\/li>\n<li>Escriba lo siguiente CREATE PRIMARY INDEX ON [nombre del cubo].<\/li>\n<li>Pulse Intro (tenga en cuenta que debe cambiar [nombre del bucket] por un nombre de bucket v\u00e1lido en su instancia del servidor Couchbase).<\/li>\n<\/ul>\n<p>M\u00e1s adelante utilizar\u00e9 el bucket de ejemplo \"beer sample\" que viene preinstalado con Couchbase, as\u00ed que probablemente deber\u00edas hacer lo mismo si quieres seguir el proceso. Una vez que hayas descargado e instalado N1QL DP4, podemos utilizar el Couchbase .NET SDK 2.0 para crear \u00edndices y ejecutar consultas.<\/p>\n<h2>Uso del SDK con N1QL DP4<\/h2>\n<p>Para utilizar el SDK necesitar\u00e1s tener instalado Visual Studio junto con .NET Framework 4.5 o superior. Si usas Mono, no lo he probado, pero deber\u00edas ser capaz de seguirlo tambi\u00e9n asumiendo que est\u00e1s usando una versi\u00f3n de Mono que es funcionalmente equivalente al .NET Framework 4.5. Espec\u00edficamente soporte para async\/await, la palabra clave din\u00e1mica y algunas de las nuevas librer\u00edas .NET.<\/p>\n<h3>Descargar y referenciar los bits<\/h3>\n<p>Para empezar a trabajar r\u00e1pidamente con el SDK, siga estos pasos:<\/p>\n<ul>\n<li>La versi\u00f3n preliminar especial del SDK puede encontrarse en <a href=\"https:\/\/packages.couchbase.com.s3.amazonaws.com\/clients\/net\/2.0\/pre-release\/Couchbase-Net-Client-N1QL-DP4-preview.zip\" target=\"_blank\">aqu\u00ed<\/a>. Desc\u00e1rgalo y descompr\u00edmelo en alg\u00fan lugar de tu disco duro.<\/li>\n<li>Abre VS y crea un nuevo proyecto \"Aplicaci\u00f3n de Consola\", ll\u00e1malo N1QL-DP4-Preview o como m\u00e1s te convenga.<\/li>\n<li>Haga clic con el bot\u00f3n derecho del rat\u00f3n en la carpeta de referencias del \"Explorador de soluciones\" de la derecha y, a continuaci\u00f3n, en \"A\u00f1adir referencia\".<\/li>\n<li>Usa el bot\u00f3n \"browse\" para encontrar las dll's que descargaste y descomprimiste en el primer paso y a\u00f1ade referencias a las siguientes: Couchbase.NetClient.dll, Common.Logging.dll y Newtonsoft.Json.dll.<\/li>\n<\/ul>\n<p>Una vez que hayas llegado hasta aqu\u00ed, puedes empezar a escribir c\u00f3digo. Ten en cuenta que voy a asumir que tu instancia del servidor Couchbase se est\u00e1 ejecutando en localhost. Si no, tendr\u00e1s que configurar tu cliente para que apunte a tu instalaci\u00f3n remota.<\/p>\n<h2>Nueva API QueryRequest<\/h2>\n<p>El soporte SDK para N1QL Developer Preview 3 (DP3) era m\u00e1s bien m\u00ednimo: s\u00f3lo se soportaban consultas literales de cadena ad-hoc. Con la nueva API REST, se cre\u00f3 una nueva clase QueryClient y se integr\u00f3 con la clase CouchbaseBucket que proporciona una API envolvente para la mayor\u00eda de las nuevas caracter\u00edsticas de la API REST - digo \"la mayor\u00eda\" porque algunas caracter\u00edsticas a\u00fan no se han completado.<\/p>\n<p>Esta nueva API incluye una clase para construir consultas utilizando una interfaz fluida. Es muy similar a la clase\/API ViewQuery que tambi\u00e9n admite el cliente y que se public\u00f3 como parte del SDK GA para consultar vistas. Tiene la siguiente firma:<\/p>\n<p>[imagen]<\/p>\n<p>Puede encadenar los distintos par\u00e1metros de la API REST construyendo una solicitud de consulta mediante una sentencia N1QL. La sentencia N1QL en s\u00ed sigue siendo una cadena literal, pero puede proporcionar opciones que le permiten controlar c\u00f3mo el servicio de consulta maneja la consulta. No voy a entrar en cada uno de estos par\u00e1metros en este post; Voy a dejar que para otra entrada del blog.<\/p>\n<p>Note que el QueryRequest no tiene nada que ver con el lenguaje N1QL? Es intencionado. Hay otro proyecto en marcha que se ocupa de la creaci\u00f3n de la consulta N1QL: un lenguaje de consulta integrada (LINQ) proveedor de N1QL, que es un poco lejos de desarrollo.<\/p>\n<p>Lo que hace este objeto es facilitar la escritura de una petici\u00f3n de consulta sin tener que crearla manualmente utilizando el intellisense del IDE y el punto \".\" . Por ejemplo:<\/p>\n<h3>Creaci\u00f3n de \u00edndices<\/h3>\n<p>En el siguiente ejemplo, mostrar\u00e9 c\u00f3mo usar el QueryRequest anterior y el Couchbase .NET SDK 2.0 N1QL DP4 Preview para crear y eliminar \u00edndices sobre la marcha:<\/p>\n<pre>\n       static void CreateIndex(IBucket bucket)\n        {\n            IQueryResult<dynamic> result;\n            var indexQuery = new QueryRequest().Statement(\"SELECT name FROM system:keyspaces\");\n            if (bucket.Query<dynamic>(indexQuery).Rows.Any(index => index.name == \"beer-sample\"))\n            {\n                var deleteIndexQuery = new QueryRequest().Statement(\"DROP PRIMARY INDEX ON `beer-sample`\");\n                result = bucket.Query<dynamic>(deleteIndexQuery);\n                Console.WriteLine(\"PRIMARY Index on `beer-sample` was deleted: {0}\", result.Success);\n            }\n            var createIndexQuery = new QueryRequest().Statement(\"CREATE PRIMARY INDEX ON `beer-sample`\");\n            result = bucket.Query<dynamic>(createIndexQuery);\n            Console.WriteLine(\"PRIMARY Index on `beer-sample` was created: {0}\", result.Success);\n        }<\/pre>\n<p>En primer lugar, consultamos el \"cat\u00e1logo\" del sistema para determinar qu\u00e9 cubos tienen \u00edndices. Un cubo con un \u00edndice ser\u00e1 devuelto en esta lista. Si el \u00edndice existe, lo eliminamos (para poder crearlo de nuevo). Por \u00faltimo, volvemos a crear el \u00edndice. Ten en cuenta que normalmente no har\u00edas esto en producci\u00f3n, pero estamos aqu\u00ed para ilustrar la funcionalidad proporcionada por N1QL y el SDK.<\/p>\n<h3>Uso de par\u00e1metros con nombre y par\u00e1metros de posici\u00f3n<\/h3>\n<p>N1QL DP4 introduce una funci\u00f3n para crear consultas parametrizadas. Existe funcionalidad para par\u00e1metros con nombre, que son como pares nombre\/valor, y tambi\u00e9n para par\u00e1metros posicionales donde la posici\u00f3n del par\u00e1metro coincide con su ordinal.<br \/>\nHe aqu\u00ed un ejemplo de consulta con par\u00e1metros posicionales:<\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 static void PositionalParameters(IBucket bucket)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var queryRequest = new QueryRequest()<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .Statement(&#8220;SELECT * FROM `beer-sample` WHERE type=$1 LIMIT $2&#8221;)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .AddPositionalParameter(\"cerveza\")<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .AddPositionalParameter(10);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var result = cubo.Consulta<dynamic>(queryRequest);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 foreach (var fila en resultado.Filas)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Consola.WriteLine(fila);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/p>\n<p>Tenga en cuenta que en este momento los par\u00e1metros posicionales no est\u00e1n indexados a cero. Si sustituyera $1 y $2 por $0 y $1, recibir\u00eda un mensaje de error.<br \/>\nUna vez m\u00e1s, los par\u00e1metros con nombre son como pares nombre\/valor y, a diferencia de los par\u00e1metros posicionales, el orden no es importante. Aqu\u00ed est\u00e1 la misma consulta anterior utilizando par\u00e1metros con nombre:<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 static void NamedParameters(IBucket bucket)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var queryRequest = new QueryRequest()<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .Statement(&#8220;SELECT * FROM `beer-sample` WHERE type=$type LIMIT $limit&#8221;)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .AddNamedParameter(\"limit\", 10)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .AddNamedParameter(\"tipo\", \"cerveza\");<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var result = cubo.Consulta<dynamic>(queryRequest);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 foreach (var fila en resultado.Filas)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Consola.WriteLine(fila);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/p>\n<p>Note que esta es la misma declaraci\u00f3n que antes, pero reorden\u00e9 los par\u00e1metros cuando cre\u00e9 el QueryRequest para mostrar que el orden no es importante.<\/p>\n<h3>Declaraciones preparadas<\/h3>\n<p>Las sentencias preparadas son algo as\u00ed como los planes de consulta en cach\u00e9 de las bases de datos relacionales. Lo que hacen es permitirle incurrir en el costo de analizar la consulta una sola vez y luego la sentencia preparada puede ser usada una y otra vez. Aunque esto est\u00e1 incluido en N1QL DP4, el soporte SDK para esta caracter\u00edstica est\u00e1 incompleto (simplemente no funciona todav\u00eda). Espere que esto funcione en una versi\u00f3n posterior cuando el c\u00f3digo de vista previa se haya fusionado con la rama maestra del SDK.<\/p>\n<h2>En conclusi\u00f3n<\/h2>\n<p>As\u00ed que, \u00a1eso es todo para la vista previa de Couchbase .NET SDK 2.0 N1QL DP4! Hay mucho, mucho m\u00e1s que repasar y publicar\u00e9 m\u00e1s blogs a medida que el desarrollo avance y nos acerquemos a N1QL GA.<\/p>\n<p>\nSi tiene alg\u00fan comentario o se encuentra con problemas o errores, por favor deje un comentario o publique un error en Jira aqu\u00ed. Adem\u00e1s, el c\u00f3digo que se incluy\u00f3 en este blog se puede encontrar en github <a href=\"https:\/\/github.com\/jeffrymorris\/couchbase-sdk-n1ql-example\" target=\"_blank\">aqu\u00ed<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Yesterday, the query team here at Couchbase released the long-awaited N1QL Developer Preview 4! If you haven\u2019t heard of N1QL, it\u2019s an all new SQL-like query language that Couchbase is developing for querying non-relational data-stores like Couchbase. The goal is [&hellip;]<\/p>","protected":false},"author":21,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,1812,2201],"tags":[],"ppma_author":[8970],"class_list":["post-1865","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-n1ql-query","category-tools-sdks"],"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>Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0! - The Couchbase Blog<\/title>\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\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!\" \/>\n<meta property=\"og:description\" content=\"Yesterday, the query team here at Couchbase released the long-awaited N1QL Developer Preview 4! If you haven\u2019t heard of N1QL, it\u2019s an all new SQL-like query language that Couchbase is developing for querying non-relational data-stores like Couchbase. The goal is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-17T03:01:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:49:53+00:00\" \/>\n<meta name=\"author\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jeffrysmorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\"},\"author\":{\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341\"},\"headline\":\"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!\",\"datePublished\":\"2015-01-17T03:01:15+00:00\",\"dateModified\":\"2025-06-14T06:49:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\"},\"wordCount\":1508,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\".NET\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\",\"name\":\"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0! - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-01-17T03:01:15+00:00\",\"dateModified\":\"2025-06-14T06:49:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!\"}]},{\"@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\/b678bdd9f7b21a33d43ea965865a3341\",\"name\":\"Jeff Morris, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, Senior Software Engineer, Couchbase\"},\"description\":\"Jeff Morris is a Senior Software Engineer at Couchbase. Prior to joining Couchbase, Jeff spent six years at Source Interlink as an Enterprise Web Architect. Jeff is responsible for the development of Couchbase SDKs and how to integrate with N1QL (query language).\",\"sameAs\":[\"https:\/\/x.com\/jeffrysmorris\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/jeff-morris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0! - The Couchbase Blog","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\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/","og_locale":"es_MX","og_type":"article","og_title":"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!","og_description":"Yesterday, the query team here at Couchbase released the long-awaited N1QL Developer Preview 4! If you haven\u2019t heard of N1QL, it\u2019s an all new SQL-like query language that Couchbase is developing for querying non-relational data-stores like Couchbase. The goal is [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-01-17T03:01:15+00:00","article_modified_time":"2025-06-14T06:49:53+00:00","author":"Jeff Morris, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@jeffrysmorris","twitter_misc":{"Written by":"Jeff Morris, Senior Software Engineer, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/"},"author":{"name":"Jeff Morris, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b678bdd9f7b21a33d43ea965865a3341"},"headline":"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!","datePublished":"2015-01-17T03:01:15+00:00","dateModified":"2025-06-14T06:49:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/"},"wordCount":1508,"commentCount":4,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":[".NET","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/","url":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/","name":"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0! - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-01-17T03:01:15+00:00","dateModified":"2025-06-14T06:49:53+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-dp4-support-for-the-couchbase-net-sdk-2-0-preview\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Preview N1QL DP4 Support for the Couchbase .NET SDK 2.0!"}]},{"@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\/b678bdd9f7b21a33d43ea965865a3341","name":"Jeff Morris, Ingeniero Superior de Software, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/73188ee2831025d81740e12e1ed80812","url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","caption":"Jeff Morris, Senior Software Engineer, Couchbase"},"description":"Jeff Morris es Ingeniero de Software Senior en Couchbase. Antes de unirse a Couchbase, Jeff pas\u00f3 seis a\u00f1os en Source Interlink como Arquitecto Web Empresarial. Jeff es responsable del desarrollo de los SDK de Couchbase y de c\u00f3mo integrarse con N1QL (lenguaje de consulta).","sameAs":["https:\/\/x.com\/jeffrysmorris"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/jeff-morris\/"}]}},"authors":[{"term_id":8970,"user_id":21,"is_guest":0,"slug":"jeff-morris","display_name":"Jeff Morris, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5f910befdbd58de8bac85293df7f544680843061ecc921ba7d293d6d52076ab3?s=96&d=mm&r=g","first_name":"Jeff","last_name":"Jeff Morris, Senior Software Engineer, Couchbase","user_url":"","author_category":"","description":"Jeff Morris es Ingeniero de Software Senior en Couchbase. Antes de unirse a Couchbase, Jeff pas\u00f3 seis a\u00f1os en Source Interlink como Arquitecto Web Empresarial. Jeff es responsable del desarrollo de los SDK de Couchbase y de c\u00f3mo integrarse con N1QL (lenguaje de consulta)."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1865","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\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1865"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1865"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}