{"id":7770,"date":"2020-07-30T22:04:49","date_gmt":"2020-07-31T05:04:49","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7770"},"modified":"2025-06-13T21:01:56","modified_gmt":"2025-06-14T04:01:56","slug":"migrating-from-mongodb-to-couchbase-part-2","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/migrating-from-mongodb-to-couchbase-part-2\/","title":{"rendered":"Migraci\u00f3n de datos de MongoDB a Couchbase, Parte 2"},"content":{"rendered":"<h2>Prolog<\/h2>\n<p>En <a href=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-data-from-mongodb-to-couchbase\/\">art\u00edculo anterior<\/a> proporcionaba detalles sobre c\u00f3mo migrar un conjunto de datos MongoDB a Couchbase Server. Este art\u00edculo muestra c\u00f3mo usar el SDK de Couchbase para acceder a los datos a trav\u00e9s de una aplicaci\u00f3n de consola Java. Los fragmentos de c\u00f3digo muestran c\u00f3mo conectarse al cl\u00faster de Couchbase, realizar operaciones clave\/valor y ejecutar b\u00fasquedas secundarias mediante consultas N1QL junto con el c\u00f3digo correspondiente para hacer lo mismo con el SDK Java de Mongo.<\/p>\n<p>Todo el c\u00f3digo de este blog est\u00e1 disponible en el siguiente repositorio Git: <a href=\"https:\/\/github.com\/dugbonsai\/mongodb-to-couchbase\">mongodb-to-couchbase<\/a>.<\/p>\n<h2>Requisitos previos<\/h2>\n<p>Un cl\u00faster Couchbase que contenga el conjunto de datos seg\u00fan los detalles del <a href=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-data-from-mongodb-to-couchbase\/\">art\u00edculo anterior<\/a>.<\/p>\n<h2>Crear un usuario de aplicaci\u00f3n<\/h2>\n<p>Antes de que un cliente (aplicaci\u00f3n) pueda conectarse al cluster del Servidor Couchbase es necesario definir un usuario de aplicaci\u00f3n que se utiliza para la autenticaci\u00f3n por parte del cliente. Couchbase <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-security\/manage-users-and-roles.html\">Control de acceso basado en funciones<\/a> le permite definir usuarios y asignarles las funciones adecuadas. Utilice la consola web para crear un usuario de aplicaci\u00f3n denominado <strong>mflix_client<\/strong> como sigue.<\/p>\n<p>Ir a la <strong>Seguridad<\/strong> en la consola web y haga clic en <strong>A\u00d1ADIR USUARIO<\/strong>:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9008\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/01.-Security-no-users.png\" alt=\"\" width=\"1443\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users.png 1443w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/01.-Security-no-users-1320x536.png 1320w\" sizes=\"auto, (max-width: 1443px) 100vw, 1443px\" \/><\/p>\n<p>Configure el <strong>mflix_client<\/strong> usuario de la siguiente manera y haga clic en <strong>A\u00f1adir usuario<\/strong>:<\/p>\n<ol>\n<li><strong>Nombre de usuario<\/strong>: mflix_client<\/li>\n<li><strong>Contrase\u00f1a<\/strong>: contrase\u00f1a (o cualquier contrase\u00f1a de su elecci\u00f3n).<\/li>\n<li><strong>Verificar contrase\u00f1a<\/strong>igual que <strong>Contrase\u00f1a<\/strong> valor de arriba.<\/li>\n<li><strong>Funciones<\/strong>: Ampliar la <strong>sample_mflix<\/strong> y seleccione <strong>Acceso a la aplicaci\u00f3n<\/strong>. Los usuarios con el <a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/learn\/security\/roles.html#application-access\">Funci\u00f3n de acceso a aplicaciones<\/a> tienen acceso completo de lectura y escritura a todos los datos del bucket sample_mflix. El rol no permite el acceso a la Consola Web de Couchbase: est\u00e1 pensado para aplicaciones, m\u00e1s que para usuarios.<\/li>\n<\/ol>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9009\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/02.-mflix_client-user.png\" alt=\"\" width=\"639\" height=\"552\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/02.-mflix_client-user.png 639w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/02.-mflix_client-user-300x259.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/02.-mflix_client-user-20x17.png 20w\" sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/p>\n<p>En el <strong>Seguridad<\/strong> ver\u00e1s el nuevo usuario mflix_client:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9010\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/03.-Security-1-user.png\" alt=\"\" width=\"1444\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user.png 1444w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/03.-Security-1-user-1320x536.png 1320w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><\/p>\n<h2>Creaci\u00f3n de \u00edndices para consultas N1QL<\/h2>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/indexes.html\">\u00cdndices secundarios<\/a> en Couchbase Server soportan la ejecuci\u00f3n eficiente de consultas (o b\u00fasquedas secundarias) al igual que los \u00edndices en MongoDB. Los ejemplos de c\u00f3digo en este art\u00edculo ejecutan <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\">Consultas N1QL<\/a> que utilizan dos \u00edndices que crear\u00e1s ejecutando consultas N1QL. Vaya a la p\u00e1gina <strong>Consulta<\/strong> en la consola web:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9011\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/04.-Query-workbench.png\" alt=\"\" width=\"1438\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench.png 1438w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench-1024x417.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench-768x313.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/04.-Query-workbench-1320x538.png 1320w\" sizes=\"auto, (max-width: 1438px) 100vw, 1438px\" \/><\/p>\n<p>El primer \u00edndice est\u00e1 en el atributo name de todos los documentos de comentarios del bucket sample_mflix. Introduzca la siguiente sentencia N1QL en el archivo <strong>Editor de consultas:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX idx1 on muestra_mflix(nombre) WHERE type=\"comentario\"<\/pre>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9012\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/05.-Create-index-idx1-statement.png\" alt=\"\" width=\"1444\" height=\"585\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement.png 1444w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement-1024x415.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement-768x311.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/05.-Create-index-idx1-statement-1320x535.png 1320w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><\/p>\n<p>Haga clic en <strong>Ejecute<\/strong> y despu\u00e9s de unos momentos el <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">creaci\u00f3n de \u00edndices<\/a> est\u00e1 completo:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9013\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/06.-Create-index-idx1-complete.png\" alt=\"\" width=\"1444\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete.png 1444w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/06.-Create-index-idx1-complete-1320x536.png 1320w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><\/p>\n<p>El segundo \u00edndice se basa en los atributos year, imdb.rating y title de todos los documentos de pel\u00edculas del bucket sample_mflix. Introduzca la siguiente sentencia N1QL en el archivo <strong>Editor de consultas<\/strong>:<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX idx2 on sample_mflix(a\u00f1o, imdb.rating, t\u00edtulo) WHERE type=\"pel\u00edcula\"<\/pre>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9014\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/07.-Create-index-idx2-statement.png\" alt=\"\" width=\"1444\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement.png 1444w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/07.-Create-index-idx2-statement-1320x536.png 1320w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><\/p>\n<p>Haga clic en <strong>Ejecute<\/strong> y al cabo de unos instantes se habr\u00e1 completado la creaci\u00f3n del \u00edndice:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9015\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/08.-Create-index-idx2-complete.png\" alt=\"\" width=\"1444\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete.png 1444w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/08.-Create-index-idx2-complete-1320x536.png 1320w\" sizes=\"auto, (max-width: 1444px) 100vw, 1444px\" \/><\/p>\n<p>Ir a la <strong>\u00cdndices<\/strong> en la consola web para verificar que los \u00edndices <strong>idx1<\/strong> &amp; <strong>idx2<\/strong> existe:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9016\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/10\/09.-Index-list-2-indexes.png\" alt=\"\" width=\"1443\" height=\"586\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes.png 1443w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes-1024x416.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes-768x312.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/10\/09.-Index-list-2-indexes-1320x536.png 1320w\" sizes=\"auto, (max-width: 1443px) 100vw, 1443px\" \/><\/p>\n<h2>Convertir llamadas API de MongoDB en llamadas API de Couchbase<\/h2>\n<p>El c\u00f3digo de ejemplo de este art\u00edculo utiliza los SDK Java de Couchbase y MongoDB y se proporciona s\u00f3lo como ejemplo de c\u00f3mo utilizar algunas de las API del SDK. Consulta los siguientes enlaces para obtener la documentaci\u00f3n completa del SDK de Couchbase para tu idioma:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/c-sdk\/current\/hello-world\/start-using-sdk.html\">C<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/hello-world\/start-using-sdk.html\">.NET<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/go-sdk\/current\/hello-world\/start-using-sdk.html\">Vaya a<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/hello-world\/start-using-sdk.html\">Java<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/hello-world\/start-using-sdk.html\">Node.js<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/php-sdk\/current\/hello-world\/start-using-sdk.html\">PHP<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/python-sdk\/current\/hello-world\/start-using-sdk.html\">Python<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/scala-sdk\/1.0\/hello-world\/start-using-sdk.html\">Scala<\/a><\/li>\n<\/ul>\n<h3>Conectarse a Couchbase Server<\/h3>\n<p>Para acceder a los recursos del cl\u00faster, los clientes deben <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/sdk-authentication-overview.html\">autentifique<\/a> pasando las credenciales apropiadas a Couchbase Server. El c\u00f3digo de ejemplo utiliza las credenciales de usuario de la aplicaci\u00f3n mflix_client creadas anteriormente para autenticar.<\/p>\n<p>El siguiente ejemplo de c\u00f3digo se conecta al cluster de Couchbase que se ejecuta en el nodo especificado, obtiene una referencia al bucket mflix_client, y una referencia a la colecci\u00f3n por defecto en ese bucket.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">Cluster cluster = Cluster.connect(\"127.0.0.1\", \"mflix_client\", \"password\");\r\nBucket bucket = cluster.bucket(\"sample_mflix\");\r\nColecci\u00f3n colecci\u00f3n = bucket.defaultCollection();<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">MongoClient mongoClient = MongoClients.create(\"mongodb+srv:\/\/:@\/ \");\r\nMongoDatabase mongoDatabase = mongoClient.getDatabase(\"sample_mflix\");\r\nMongoCollection comments = mongoDatabase.getCollection(\"comments\");\r\nMongoCollection movies = mongoDatabase.getCollection(\"movies\");<\/pre>\n<h3>Recuperar un documento por ID<\/h3>\n<p>Utiliza el <strong>Colecci\u00f3n.get()<\/strong> para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#retrieving-documents\">recuperar documentos completos<\/a> por ID. El siguiente ejemplo de c\u00f3digo recupera dos documentos de la colecci\u00f3n predeterminada del bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ get() lanzar\u00e1 una excepci\u00f3n si no existe un documento con el ID especificado\r\nGetResult comment = collection.get(\"comment:5a9427648b0beebeb69579cc\");\r\nSystem.out.println(comment.contentAsObject());\r\n\r\nGetResult movie = collection.get(\"movie:573a1390f29313caabcd4135\");\r\nSystem.out.println(movie.contentAsObject());<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">comments.find(Filters.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579cc\"));\r\nmovies.find(Filters.eq(\"_id\", new ObjectId(\"573a1390f29313caabcd4135\")));<\/pre>\n<h3>Insertar un nuevo documento<\/h3>\n<p>Utiliza el <strong>Colecci\u00f3n.insertar()<\/strong> para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#insert\">crear un nuevo documento<\/a> con el ID y el contenido especificados si a\u00fan no existe. El siguiente ejemplo de c\u00f3digo inserta este documento en la colecci\u00f3n predeterminada del bucket sample_mflix:<\/p>\n<pre class=\"lang:java decode:true\">{\r\n  \"nombre\": \"Anat Chase\",\r\n  \"email\": \"anat_chase@fakegmail.com\",\r\n  \"movie_id\":\"movie:573a1390f29313caabcd4135\",\r\n  \"text\": \"Esta es la cr\u00edtica de Anat\",\r\n  \"type\": \"comment\"\r\n}<\/pre>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">JsonObject doc = JsonObject.create()\r\n  .put(\"nombre\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4135\")\r\n  .put(\"text\", \"Esta es la rese\u00f1a de Anat\")\r\n  .put(\"type\", \"comment\");\r\n\r\n\/\/ insert() lanzar\u00e1 una excepci\u00f3n si ya existe un documento con el ID especificado\r\ncollection.insert(\"comment:5a9427648b0beebeb69579c0\", doc);<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">Document doc = new Document(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\"))\r\n  .append(\"nombre\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4135\"))\r\n  .append(\"text\", \"Esta es la rese\u00f1a de Anat\");\r\n\r\ncomments.insertOne(doc);<\/pre>\n<h3>Insertar varios documentos nuevos<\/h3>\n<p><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/concurrent-async-apis.html#batching\">Operaciones de dosificaci\u00f3n<\/a> le permite aprovechar mejor su red y acelerar su aplicaci\u00f3n aumentando el rendimiento de la red y reduciendo la latencia. Las operaciones por lotes funcionan mediante\u00a0<em>pipelining<\/em>\u00a0a trav\u00e9s de la red. Cuando las solicitudes se canalizan, se env\u00edan en un gran grupo al cl\u00faster. El cl\u00faster, a su vez\u00a0<em>tuber\u00edas<\/em>\u00a0al cliente.<\/p>\n<p>El siguiente ejemplo de c\u00f3digo utiliza este enfoque para insertar dos nuevos documentos en el bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ Crear dos documentos JSON\r\nList&lt;Tuple2&gt; documents = new ArrayList&lt;Tuple2&gt;();\r\ndoc = JsonObject.create()\r\n  .put(\"nombre\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd42e8\")\r\n  .put(\"text\", \"Esta es la rese\u00f1a de Anat\")\r\n  .put(\"tipo\", \"comentario\");\r\ndocuments.add(Tuples.of(\"comentario:5a9427648b0beebeb69579c1\", doc));\r\n\r\nJsonObject doc2 = JsonObject.create()\r\n  .put(\"nombre\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4323\")\r\n  .put(\"text\", \"Esta es la rese\u00f1a de Anat\")\r\n  .put(\"tipo\", \"comentario\");\r\ndocuments.add(Tuples.of(\"comentario:5a9427648b0beebeb69579c2\", doc2));\r\n\r\n\/\/ Inserta los 2 documentos en un lote, esperando hasta que el \u00faltimo haya terminado.\r\n\/\/ insert() lanzar\u00e1 una excepci\u00f3n si ya existe un documento con el ID especificado\r\nFlujo\r\n  .fromIterable(documentos)\r\n    .parallel().runOn(Schedulers.elastic())\r\n    .concatMap(doc3 -&gt; reactiveCollection.insert(doc3.getT1(), doc3.getT2())\r\n      .onErrorResume(e -&gt; Mono.error(new Exception(doc3.getT1(), e))))\r\n    .secuencial().collectList().block();<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">List documents = new ArrayList();\r\nDocument doc1 = new Document(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c1\"))\r\n  .append(\"nombre\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd42e8\"))\r\n  .append(\"text\", \"Esta es la rese\u00f1a de Anat\");\r\ndocuments.add(doc1);\r\n\r\nDocument doc2 = new Document(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c2\"))\r\n  .append(\"nombre\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4323\"))\r\n  .append(\"text\", \"Esta es la rese\u00f1a de Anat\");\r\ndocuments.add(doc2);\r\n\r\ncomments.insertMany(documentos);<\/pre>\n<h3>Actualizar un documento existente<\/h3>\n<p>Utiliza el <strong>Colecci\u00f3n.reemplazar()<\/strong> para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#replace\">actualizar un documento existente<\/a> con el ID especificado s\u00f3lo si ya existe. Couchbase admite <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/subdocument-operations.html\">operaciones con subdocumentos<\/a> que puede utilizarse para acceder eficazmente a\u00a0<em>piezas<\/em>\u00a0de documentos. Las operaciones con subdocumentos pueden ser m\u00e1s r\u00e1pidas y eficientes en red que\u00a0<em>documento completo\u00a0<\/em>porque s\u00f3lo transmiten por la red las secciones del documento a las que se ha accedido. Las operaciones con documentos completos y subdocumentos son at\u00f3micas, lo que permite realizar modificaciones seguras en los documentos con control de concurrencia incorporado.<\/p>\n<p>El siguiente ejemplo de c\u00f3digo utiliza operaciones de subdocumento para actualizar el atributo de texto de un documento especificado.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ Actualizar un documento utilizando la API de subdocumentos para modificar los atributos espec\u00edficos\r\n\/\/ replace() lanzar\u00e1 una excepci\u00f3n si no existe un documento con el ID especificado\r\ncollection.mutateIn(\r\n  \"comment:5a9427648b0beebeb69579c0\",\r\n  Arrays.asList(replace(\"texto\", \"Esta no es la rese\u00f1a de Anat\"));<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">comments.updateOne(\r\n  Filters.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\")),\r\n  Updates.combine(Updates.set(\"text\", \"\")));<\/pre>\n<h3>Actualizar varios documentos<\/h3>\n<p>Adem\u00e1s del acceso primario mediante API de clave\/valor, tambi\u00e9n puede <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/n1ql-queries-with-sdk.html\">ejecutar consultas N1QL<\/a> a trav\u00e9s de las API N1QL. <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\">N1QL<\/a> es un lenguaje declarativo para consultar, transformar y manipular datos JSON - piensa en SQL para JSON.<\/p>\n<p>El siguiente ejemplo de c\u00f3digo ejecuta una consulta N1QL para actualizar los atributos de nombre y correo electr\u00f3nico de todos los documentos de comentarios cuyo nombre sea Anat Chase. Esta consulta utiliza el atributo <strong>idx1<\/strong> creado anteriormente.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ ejecutar una consulta N1QL UPDATE a trav\u00e9s de la API de consulta\r\nString statement =\r\n  \"UPDATE sample_mflix \" +\r\n  \"SET name='Anita Chase', email='anita_chase@fakegmail.com' \" +\r\n  \"WHERE type='comment' AND name='Anat Chase'\";\r\nQueryResult updateResult = cluster.query(statement);\r\n<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">comentarios.updateMany(\r\n  Filters.eq(\"nombre\", \"Anat Chase\"),\r\n  Updates.combine(\r\n    Updates.set(\"nombre\", \"Anita Chase\"),\r\n    Updates.set(\"email\", \"anita_chase@fakegmail.com\")));<\/pre>\n<h3>Actualizar o insertar un documento<\/h3>\n<p>Utiliza el <strong>Colecci\u00f3n.upsert()<\/strong> para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#upsert\">insertar el documento si no existe, o sustituirlo si existe<\/a>. Si no existe un documento con el ID especificado, upsert() crear\u00e1 un nuevo documento. Si existe un documento con el ID especificado, upsert() actualizar\u00e1 el documento existente. El siguiente ejemplo de c\u00f3digo actualiza un documento existente en el bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">doc = JsonObject.create()\r\n  .put(\"nombre\", \"Mia Hannas\")\r\n  .put(\"email\", \"mia_hannas@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4135\")\r\n  .put(\"text\", \"Esta es la rese\u00f1a de Mia\")\r\n  .put(\"type\", \"comment\");\r\n\r\n\/\/ upsert() actualizar\u00e1 el documento si existe o insertar\u00e1 el documento si no existe\r\ncollection.upsert(\"comment:5a9427648b0beebeb69579c0\", doc);<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">collection.replaceOne(\r\n  Filters.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\")),\r\n  new Document(\"nombre\", \"Mia Hannas\")\r\n    .append(\"email\", \"mia_hannas@fakegmail.com\")\r\n    .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4135\"))\r\n    .append(\"text\", \"Esta es la cr\u00edtica de Mia\"),\r\n  new UpdateOptions().upsert(true));<\/pre>\n<h3>Borrar un documento<\/h3>\n<p>Utiliza el <strong>Colecci\u00f3n.eliminar()<\/strong> para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#removing\">eliminar un documento completo<\/a> con el ID especificado. El siguiente ejemplo de c\u00f3digo elimina un documento existente del bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ remove() lanzar\u00e1 una excepci\u00f3n si el documento no existe\r\ncollection.remove(\"comment:5a9427648b0beebeb69579c0\");<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">collection.deleteOne(Filters.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\"));<\/pre>\n<h3>Borrar varios documentos<\/h3>\n<p>Tambi\u00e9n puede utilizar consultas N1QL para eliminar documentos. El siguiente ejemplo de c\u00f3digo ejecuta una consulta N1QL para eliminar varios documentos del bucket sample_mflix. Se eliminar\u00e1n todos los documentos de comentarios cuyo nombre sea Anita Chase. Esta consulta utiliza el m\u00e9todo <strong>idx1<\/strong> creado anteriormente.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ ejecuta una consulta DELETE N1QL a trav\u00e9s de la API de consultas\r\nString statement = \"DELETE FROM muestra_mflix \" +\r\n  \"WHERE type='comment' AND name='Anita Chase'\";\r\n\r\nQueryResult deleteResult = cluster.query(statement);<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">comments.deleteMany(Filters.eq(\"nombre\", \"Anita Chase\"));<\/pre>\n<h3>Acceso a datos con N1QL<\/h3>\n<p>N1QL tambi\u00e9n puede utilizarse para realizar b\u00fasquedas secundarias de datos m\u00e1s complicadas. El siguiente ejemplo de c\u00f3digo ejecuta una consulta N1QL de bloqueo para seleccionar el t\u00edtulo, el a\u00f1o y la calificaci\u00f3n imdb de todos los documentos de pel\u00edculas cuyo a\u00f1o est\u00e9 comprendido entre 1970 y 1979, ordenados por la calificaci\u00f3n imdb. La consulta utiliza el m\u00e9todo <strong>idx2<\/strong> creado anteriormente.<\/p>\n<p>Similar a <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/concurrent-async-apis.html#batching\">operaciones reactivas clave\/valor por lotes<\/a>, <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/n1ql-queries-with-sdk.html#reactive-and-async-apis\">consultas reactivas y as\u00edncronas<\/a> para un mejor rendimiento.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:default decode:true\">\/\/ ejecutar una consulta SELECT N1QL (bloqueo) a trav\u00e9s de la API de consulta\r\nString selectStatement = \"SELECT title, year, imdb.rating FROM sample_mflix \" +\r\n  \"WHERE type='movie' AND year BETWEEN 1970 AND 1979 ORDER BY imdb.rating DESC\";\r\n\r\nfinal QueryResult selectResult = cluster.query(selectStatement);\r\nfor (JsonObject row : selectResult.rowsAsObject()) {\r\n  System.out.println(row.toString());\r\n}\r\n<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">movies.find(Filtros.and(Filtros.gte(\"a\u00f1o\", 1970), Filtros.lte(\"a\u00f1o\", 1979)))\r\n  .sort(Sorts.descending(\"imdb.rating\"))\r\n  .projection(Projections.fields(\r\n    Projections.include(\"t\u00edtulo\", \"a\u00f1o\", \"imdb.rating\"),\r\n    Projections.excludeId());<\/pre>\n<h2><strong>El futuro<\/strong><\/h2>\n<p>Explore las otras capacidades del SDK de Couchbase incluyendo <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/analytics-using-sdk.html\">Anal\u00edtica<\/a> y <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/full-text-searching-with-sdk.html\">B\u00fasqueda de texto completo<\/a>. Aproveche nuestra formaci\u00f3n gratuita en l\u00ednea disponible en <a href=\"https:\/\/learn.couchbase.com\/\">https:\/\/learn.couchbase.com<\/a> para obtener m\u00e1s informaci\u00f3n sobre Couchbase.<\/p>\n<p>Para obtener informaci\u00f3n detallada sobre las ventajas arquitect\u00f3nicas de la plataforma de datos Couchbase sobre MongoDB, consulte este documento: <a href=\"https:\/\/drive.google.com\/file\/d\/14YQuCAGSsvNcnlBJkM6QnnLNzo3GadTk\/view\">Couchbase: Mejor que MongoDB en todos los sentidos<\/a>.<\/p>\n<p>Descubra por qu\u00e9 otras empresas eligen Couchbase en lugar de MongoDB:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/customers\/directv\/\">DIRECTV<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/customers\/viber\/\">Viber<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/customers\/nuance\/\">Nuance<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?list=PLcspbWiU9RuunKnZwfE757B6-xsaiJV84&amp;time_continue=2&amp;v=UD_4zuga1kk\">Grapas<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Prolog The previous article provided details on how to migrate a MongoDB data set to Couchbase Server. This article shows you how to use the Couchbase SDK to access the data via a Java console application. Code snippets show how [&hellip;]<\/p>","protected":false},"author":1352,"featured_media":7289,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1818,1812,2201],"tags":[2378,1393,1505,1309],"ppma_author":[9091],"class_list":["post-7770","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-java","category-n1ql-query","category-tools-sdks","tag-6-5","tag-api","tag-index","tag-mongodb"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrating Data from MongoDB to Couchbase, Part 2 - 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\/migrating-from-mongodb-to-couchbase-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating Data from MongoDB to Couchbase, Part 2\" \/>\n<meta property=\"og:description\" content=\"Prolog The previous article provided details on how to migrate a MongoDB data set to Couchbase Server. This article shows you how to use the Couchbase SDK to access the data via a Java console application. Code snippets show how [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-from-mongodb-to-couchbase-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-31T05:04:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:01:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"389\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Douglas Bonser, Principal Solution Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Douglas Bonser, Principal Solution Engineer, Couchbase\" \/>\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\/migrating-from-mongodb-to-couchbase-part-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\"},\"author\":{\"name\":\"Douglas Bonser, Principal Solution Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7fdd6feab8e25100caf61bb7836ee0ff\"},\"headline\":\"Migrating Data from MongoDB to Couchbase, Part 2\",\"datePublished\":\"2020-07-31T05:04:49+00:00\",\"dateModified\":\"2025-06-14T04:01:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\"},\"wordCount\":1179,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png\",\"keywords\":[\"6.5\",\"API\",\"Index\",\"mongodb\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Java\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\",\"name\":\"Migrating Data from MongoDB to Couchbase, Part 2 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png\",\"datePublished\":\"2020-07-31T05:04:49+00:00\",\"dateModified\":\"2025-06-14T04:01:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png\",\"width\":1100,\"height\":389},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating Data from MongoDB to Couchbase, Part 2\"}]},{\"@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\/7fdd6feab8e25100caf61bb7836ee0ff\",\"name\":\"Douglas Bonser, Principal Solution Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e922810e11bd43dd211ba0ee960f9738\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/68f7547e24c39852e700940d8209edf75f6b9cd64ba057ce1e11313d9230ab84?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/68f7547e24c39852e700940d8209edf75f6b9cd64ba057ce1e11313d9230ab84?s=96&d=mm&r=g\",\"caption\":\"Douglas Bonser, Principal Solution Engineer, Couchbase\"},\"description\":\"Douglas Bonser is a Principal Solutions Engineer at Couchbase and has been working in IT and technology since 1991. He is based in the Dallas\/Ft. Worth area.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/douglas-bonsercouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Migrating Data from MongoDB to Couchbase, Part 2 - 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\/migrating-from-mongodb-to-couchbase-part-2\/","og_locale":"es_MX","og_type":"article","og_title":"Migrating Data from MongoDB to Couchbase, Part 2","og_description":"Prolog The previous article provided details on how to migrate a MongoDB data set to Couchbase Server. This article shows you how to use the Couchbase SDK to access the data via a Java console application. Code snippets show how [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/migrating-from-mongodb-to-couchbase-part-2\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-07-31T05:04:49+00:00","article_modified_time":"2025-06-14T04:01:56+00:00","og_image":[{"width":1100,"height":389,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png","type":"image\/png"}],"author":"Douglas Bonser, Principal Solution Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Douglas Bonser, Principal Solution Engineer, Couchbase","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/"},"author":{"name":"Douglas Bonser, Principal Solution Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7fdd6feab8e25100caf61bb7836ee0ff"},"headline":"Migrating Data from MongoDB to Couchbase, Part 2","datePublished":"2020-07-31T05:04:49+00:00","dateModified":"2025-06-14T04:01:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/"},"wordCount":1179,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png","keywords":["6.5","API","Index","mongodb"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Java","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/","url":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/","name":"Migrating Data from MongoDB to Couchbase, Part 2 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png","datePublished":"2020-07-31T05:04:49+00:00","dateModified":"2025-06-14T04:01:56+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/07\/mongo-to-couchbase.png","width":1100,"height":389},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating Data from MongoDB to Couchbase, Part 2"}]},{"@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\/7fdd6feab8e25100caf61bb7836ee0ff","name":"Douglas Bonser, Ingeniero principal de soluciones, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e922810e11bd43dd211ba0ee960f9738","url":"https:\/\/secure.gravatar.com\/avatar\/68f7547e24c39852e700940d8209edf75f6b9cd64ba057ce1e11313d9230ab84?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/68f7547e24c39852e700940d8209edf75f6b9cd64ba057ce1e11313d9230ab84?s=96&d=mm&r=g","caption":"Douglas Bonser, Principal Solution Engineer, Couchbase"},"description":"Douglas Bonser es Ingeniero Principal de Soluciones en Couchbase y lleva trabajando en TI y tecnolog\u00eda desde 1991. Reside en el \u00e1rea de Dallas\/Ft. Worth.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/douglas-bonsercouchbase-com\/"}]}},"authors":[{"term_id":9091,"user_id":1352,"is_guest":0,"slug":"douglas-bonsercouchbase-com","display_name":"Douglas Bonser, Principal Solution Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/68f7547e24c39852e700940d8209edf75f6b9cd64ba057ce1e11313d9230ab84?s=96&d=mm&r=g","author_category":"","last_name":"Bonser, Principal Solution Engineer, Couchbase","first_name":"Douglas","job_title":"","user_url":"","description":"Douglas Bonser es Ingeniero Principal de Soluciones en Couchbase y lleva trabajando en TI y tecnolog\u00eda desde 1991. Reside en el \u00e1rea de Dallas\/Ft. Worth."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7770","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\/1352"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=7770"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/7770\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/7289"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=7770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=7770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=7770"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=7770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}