{"id":3157,"date":"2017-04-06T08:08:51","date_gmt":"2017-04-06T15:08:51","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3157"},"modified":"2020-10-28T08:33:16","modified_gmt":"2020-10-28T15:33:16","slug":"import-mongodb-collection-data-couchbase-server-golang","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/import-mongodb-collection-data-couchbase-server-golang\/","title":{"rendered":"Importa los datos de tu colecci\u00f3n MongoDB al servidor Couchbase con Golang"},"content":{"rendered":"<p>Si has estado al d\u00eda, recordar\u00e1s que escrib\u00ed algunos tutoriales sobre c\u00f3mo convertir tus aplicaciones Node.js con MongoDB a Couchbase.  Estos inclu\u00edan un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/moving-node-js-mongodb-application-couchbase-n1ql\/\" target=\"_blank\" rel=\"noopener noreferrer\">Lenguaje de consulta MongoDB a N1QL<\/a> as\u00ed como un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/migrating-mongodb-mongoose-restful-api-couchbase-ottoman\/\" target=\"_blank\" rel=\"noopener noreferrer\">De mangosta a otomano<\/a> tutorial.  Estos fueron grandes tutoriales de migraci\u00f3n desde una perspectiva de aplicaci\u00f3n, pero realmente no te dicen c\u00f3mo obtener sus colecciones existentes de MongoDB importados como archivos JSON.<\/p>\n<p>As\u00ed que, en este tutorial, vamos a explorar c\u00f3mo importar datos de colecci\u00f3n de MongoDB a Couchbase.  El lenguaje de desarrollo no importa realmente, pero Golang es muy r\u00e1pido y muy potente por lo que es un candidato perfecto para el trabajo.<\/p>\n<p><!--more--><\/p>\n<p>Antes de preocuparnos por escribir un script de migraci\u00f3n de datos, pensemos en un conjunto de datos de ejemplo con el que podamos trabajar.  El objetivo aqu\u00ed es ser universal en nuestro script, pero ayuda tener un ejemplo.<\/p>\n<h2>El modelo de colecci\u00f3n de MongoDB<\/h2>\n<p>Supongamos que tenemos una colecci\u00f3n llamada\u00a0<strong>cursos<\/strong> que contiene informaci\u00f3n sobre los cursos ofrecidos por una escuela.  El modelo de documento para cualquiera de estos documentos podr\u00eda parecerse a lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\r\n    \"nombre\": \"Cester\u00eda 101\",\r\n    \"students\": [\r\n        \"nraboy\",\r\n        \"mgroves\",\r\n        \"hgreeley\"\r\n    ]\r\n}<\/pre>\n<p>Cada documento representar\u00eda un \u00fanico curso con una lista de alumnos matriculados.  Cada documento tiene un valor de identificaci\u00f3n y los estudiantes matriculados hacen referencia a documentos de otra colecci\u00f3n con valores de identificaci\u00f3n coincidentes.<\/p>\n<p>Con MongoDB instalado tienes acceso a su <a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/program\/mongoexport\/\" target=\"_blank\" rel=\"noopener noreferrer\">mongoexport<\/a> utilidad.  Esto nos permitir\u00e1 exportar los documentos existentes en cualquier Colecci\u00f3n a un fichero de datos JSON.<\/p>\n<p>Por ejemplo, podr\u00edamos ejecutar el siguiente comando contra nuestra base de datos MongoDB:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">mongoexport --db ejemplo --colecci\u00f3n cursos --out cursos.json<\/pre>\n<p>La base de datos en cuesti\u00f3n ser\u00eda\u00a0<code>ejemplo<\/code> y estamos exportando el\u00a0<code>cursos<\/code> a un archivo llamado\u00a0<strong>cursos.json<\/strong>.  Si intentamos abrir este archivo JSON, ver\u00edamos datos con un aspecto similar al siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\"_id\":{\"$oid\":\"course-1\"},\"name\":\"Basket Weaving 101\",\"students\":[{\"$oid\":\"nraboy\"},{\"$oid\":\"mgroves\"}]}\r\n{\"_id\":{\"$oid\":\"course-2\"},\"name\":\"TV Watching 101\",\"students\":[{\"$oid\":\"jmichaels\"},{\"$oid\":\"tgreenstein\"}]}<\/pre>\n<p>Cada documento ser\u00e1 una nueva l\u00ednea en el archivo, sin embargo no ser\u00e1 exactamente como nuestro esquema fue modelado. MongoDB tomar\u00e1 todas las referencias a documentos y las envolver\u00e1 en una l\u00ednea <code>$oid<\/code> que representa un identificador de objeto.<\/p>\n<p>\u00bfD\u00f3nde nos deja esto?<\/p>\n<h2>Planificaci\u00f3n del modelo de cubos de Couchbase<\/h2>\n<p>Como probablemente ya sabr\u00e1s, Couchbase no utiliza Colecciones, sino Buckets.  Sin embargo, los Buckets no funcionan igual que las Colecciones.  En lugar de tener un Bucket por cada tipo de documento como hace MongoDB, tendr\u00e1s un Bucket por cada aplicaci\u00f3n.<\/p>\n<p>Esto significa que tendremos que hacer algunos cambios en la exportaci\u00f3n de MongoDB para que tenga alg\u00fan tipo de sentido dentro de Couchbase.<\/p>\n<p>En Couchbase es normal tener una propiedad document en cada documento que representa el tipo de documento que es.  Por suerte para nosotros conocemos el nombre de la antigua Collection y podemos hacer un poco de magia.  Como resultado final nuestros documentos Couchbase deber\u00edan tener este aspecto:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">{\r\n    \"_id\": \"course-1\",\r\n    \"_type\": \"cursos\",\r\n    \"name\": \"Cester\u00eda 101\",\r\n    \"students\": [\r\n        \"nraboy\",\r\n        \"mgroves\",\r\n        \"hgreeley\"\r\n    ]\r\n}<\/pre>\n<p>En el ejemplo anterior hemos comprimido todos los\u00a0<code>$oid<\/code> y a\u00f1adimos los valores\u00a0<code>_id<\/code> y\u00a0<code>Tipo<\/code> propiedades.<\/p>\n<h2>Desarrollo del script de importaci\u00f3n de colecciones Golang<\/h2>\n<p>Ahora que sabemos hacia d\u00f3nde nos dirigimos, podemos centrarnos en el script que har\u00e1 las manipulaciones y la carga.  Sin embargo, vamos a pensar en nuestra l\u00f3gica Golang sobre c\u00f3mo realizar el trabajo.<\/p>\n<p>Sabemos que vamos a leer l\u00ednea por l\u00ednea de un archivo JSON.  Por cada l\u00ednea le\u00edda necesitamos manipularla, y luego guardarla.  Tanto leer de un archivo como insertarlo en Couchbase son operaciones bloqueantes.  Mientras que leer es bastante r\u00e1pido, insertar un \u00fanico documento a la vez de forma bloqueante para terabytes de datos puede ser bastante lento.  Esto significa que debemos iniciar goroutines para hacer las cosas en paralelo.<\/p>\n<p>Cree un nuevo proyecto en alg\u00fan lugar de su\u00a0<strong>$GOPATH<\/strong> y crear un archivo llamado\u00a0<strong>main.go<\/strong> con el siguiente c\u00f3digo:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">paquete principal\r\n\r\nimportar (\r\n\t\"bufio\"\r\n\t\"codificaci\u00f3n\/json\"\r\n\t\"flag\"\r\n\t\"fmt\"\r\n\t\"os\"\r\n\t\"sync\"\r\n\r\n\t\"github.com\/couchbase\/gocb\"\r\n)\r\n\r\nvar waitGroup sync.WaitGroup\r\nvar data chan cadena\r\nvar bucket *gocb.Bucket\r\n\r\nfunc main() {}\r\n\r\nfunc worker(cadena colecci\u00f3n) {}\r\n\r\nfunc cbimport(documento cadena, colecci\u00f3n cadena) {}\r\n\r\nfunc compressObjectIds(mapDocument map[cadena]interfaz{}) cadena {}<\/pre>\n<p>El c\u00f3digo anterior es simplemente un plano de lo que vamos a lograr.  El\u00a0<code>principal<\/code> ser\u00e1 responsable de iniciar varias goroutines y leer nuestro archivo JSON.  No queremos que la aplicaci\u00f3n termine cuando la funci\u00f3n\u00a0<code>principal<\/code> por lo que utilizamos una funci\u00f3n <a href=\"https:\/\/golang.org\/pkg\/sync\/\" target=\"_blank\" rel=\"noopener noreferrer\">Grupo de espera<\/a>.  Esto evitar\u00e1 que la aplicaci\u00f3n termine hasta que todas las goroutines hayan terminado.<\/p>\n<p>En\u00a0<code>trabajador<\/code> ser\u00e1 cada goroutine y llamar\u00e1 a\u00a0<code>cbimport<\/code> que llamar\u00e1 a\u00a0<code>compressObjectIds<\/code> para cambiar cualquier\u00a0<code>$oid<\/code> con el equivalente comprimido.  Por comprimido quiero decir que no incluir\u00e1 un envoltorio\u00a0<code>$oid<\/code> propiedad.<\/p>\n<p>Ve\u00e1moslo\u00a0<code>principal<\/code> funci\u00f3n:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">func main() {\r\n\tfmt.Println(\"Iniciando el proceso de importaci\u00f3n...\")\r\n\r\n\tflagInputFile := flag.String(\"input-file\", \"\", \"fichero con ruta que contiene documentos\")\r\n\tflagWorkerCount := flag.Int(\"workers\", 20, \"trabajadores concurrentes para importar datos\")\r\n\tflagNombreColecci\u00f3n := flag.String(\"colecci\u00f3n\", \"\", \"nombre de la colecci\u00f3n mongodb\")\r\n\tflagCouchbaseHost := flag.String(\"couchbase-host\", \"\", \"host del cluster couchbase\")\r\n\tflagCouchbaseBucket := flag.String(\"couchbase-bucket\", \"\", \"nombre del cubo couchbase\")\r\n\tflagCouchbaseBucketPassword := flag.String(\"couchbase-bucket-password\", \"\", \"couchbase bucket password\")\r\n\tflag.Parse()\r\n\r\n\tcluster, _ := gocb.Connect(\"couchbase:\/\/\" + *flagCouchbaseHost)\r\n\tbucket, _ = cluster.OpenBucket(*flagCouchbaseBucket, *flagCouchbaseBucketPassword)\r\n\r\n\tfile, _ := os.Open(*flagArchivoDeEntrada)\r\n\taplazar archivo.Cerrar()\r\n\r\n\tdatos = make(cadena chan)\r\n\r\n\tesc\u00e1ner := bufio.NuevoEsc\u00e1ner(archivo)\r\n\tscanner.Split(bufio.ScanLines)\r\n\r\n\tfor i := 0; i &lt; *flagWorkerCount; i++ {\r\n\t\twaitGroup.Add(1)\r\n\t\tgo trabajador(*nombreColecci\u00f3nBandera)\r\n\t}\r\n\r\n\tpara scanner.Scan() {\r\n\t\tdata &lt;- scanner.Text()\r\n\t}\r\n\r\n\tclose(datos)\r\n\r\n\twaitGroup.Wait()\r\n\r\n\tfmt.Println(&quot;\u00a1La importaci\u00f3n ha finalizado!&quot;)\r\n}<\/pre>\n<p>La funci\u00f3n anterior tomar\u00e1 un conjunto de banderas de l\u00ednea de comandos que se utilizar\u00e1n en la configuraci\u00f3n de la aplicaci\u00f3n.  Se establecer\u00e1 la conexi\u00f3n con el Couchbase Server y Bucket de destino y se abrir\u00e1 el archivo de entrada.<\/p>\n<p>Como estamos usando goroutines, necesitamos usar variables de canal para evitar escenarios de bloqueo.  Todas las l\u00edneas le\u00eddas se pondr\u00e1n en cola en el canal desde el que leer\u00e1 cada goroutine.<\/p>\n<p>Despu\u00e9s de activar las goroutines, el archivo ser\u00e1 le\u00eddo y el canal ser\u00e1 llenado.  Despu\u00e9s de que el archivo sea le\u00eddo completamente, el canal se cerrar\u00e1.  Esto significa que cuando las goroutines lean todos los datos, las goroutines podr\u00e1n terminar.  Esperaremos hasta que las goroutines terminen antes de terminar la aplicaci\u00f3n.<\/p>\n<p>Ahora echemos un vistazo al\u00a0<code>trabajador<\/code> funci\u00f3n:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">func trabajador(colecci\u00f3n cadena) {\r\n\taplazar waitGroup.Done()\r\n\tpara {\r\n\t\tdocument, ok := &lt;-data\r\n\t\tif !ok {\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tcbimport(documento, colecci\u00f3n)\r\n\t}\r\n}<\/pre>\n<p>El nombre de la colecci\u00f3n MongoDB se pasar\u00e1 a cada trabajador y el trabajador permanecer\u00e1 en funcionamiento en un bucle hasta que el canal se cierre.<\/p>\n<p>Por cada documento le\u00eddo del canal, el\u00a0<code>cbimport<\/code> se llamar\u00e1 a la funci\u00f3n<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">func cbimport(documento cadena, colecci\u00f3n cadena) {\r\n\tvar mapDocument map[cadena]interfaz{}\r\n\tjson.Unmarshal([]byte(document), &amp;mapDocument)\r\n\tmapDocument[\"_tipo\"] = colecci\u00f3n\r\n\tcompressObjectIds(mapDocument)\r\n\tbucket.Insert(mapDocument[\"_id\"].(string), mapDocument, 0)\r\n}<\/pre>\n<p>Cada l\u00ednea del fichero ser\u00e1 una cadena que tendremos que descomponer en un mapa de interfaces.  Conocemos el nombre de la colecci\u00f3n, as\u00ed que podemos crear una propiedad que contenga ese nombre concreto.  A continuaci\u00f3n, podemos pasar todo el mapa a la propiedad\u00a0<code>compressObjectIds<\/code> para deshacerse de cualquier\u00a0<code>$oid<\/code> envoltorios.<\/p>\n<p>En\u00a0<code>compressObjectIds<\/code> tiene el siguiente aspecto:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">func comprimirObjetos(mapDocumento map[cadena]interfaz{}) cadena {\r\n\tvar objectIdValue cadena\r\n\tfor clave, valor := rango mapDocument {\r\n\t\tswitch valor.(tipo) {\r\n\t\tcase cadena:\r\n\t\t\tif key == \"$oid\" &amp;&amp; len(mapDocument) == 1 {\r\n\t\t\t\treturn valor.(cadena)\r\n\t\t\t}\r\n\t\tcase mapa[cadena]interfaz{}:\r\n\t\t\tobjectIdValue = compressObjectIds(value.(map[string]interface{}))\r\n\t\t\tif objectIdValue != \"\" {\r\n\t\t\t\tmapDocument[key] = objectIdValue\r\n\t\t\t}\r\n\t\tcase []interfaz{}:\r\n\t\t\tfor \u00edndice, elemento := rango valor.([]interfaz{}) {\r\n\t\t\t\tobjectIdValue = compressObjectIds(elemento.(mapa[cadena]interfaz{}))\r\n\t\t\t\tif objectIdValue != \"\" {\r\n\t\t\t\t\tvalue.([]interfaz{})[\u00edndice] = objectIdValue\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn \"\"\r\n}<\/pre>\n<p>En el ejemplo anterior, b\u00e1sicamente estamos recorriendo todas las claves del documento.  Si el valor es un objeto anidado o una matriz JSON, hacemos lo mismo recursivamente hasta que encontremos una cadena con una clave de <code>$oid<\/code>.  Si se cumple esta condici\u00f3n nos aseguramos de que es la \u00fanica clave en ese nivel del documento.  Esto nos permitir\u00e1 saber que es un id que podemos comprimir con seguridad.<\/p>\n<p>No est\u00e1 tan mal, \u00bfverdad?<\/p>\n<h2>Ejecutar el importador de MongoDB a Couchbase<\/h2>\n<p>Asumiendo que tienes el lenguaje de programaci\u00f3n Go instalado y configurado, necesitamos construir esta aplicaci\u00f3n.<\/p>\n<p>Desde la l\u00ednea de comandos, tendr\u00e1s que obtener todas las dependencias.  Con el proyecto como tu directorio de trabajo actual, ejecuta lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">go get -d -v<\/pre>\n<p>El comando anterior obtendr\u00e1 cualquier dependencia encontrada en nuestros archivos Go.<\/p>\n<p>Ahora la aplicaci\u00f3n puede ser construida y ejecutada, o simplemente ejecutada.  Los pasos no son realmente diferentes, pero s\u00f3lo vamos a ejecutar el c\u00f3digo.<\/p>\n<p>Desde la l\u00ednea de comandos, ejecute lo siguiente:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">.\/collectionimport\r\n    --input-file NOMBRE_ARCHIVO.json \\\r\n    --collection COLLECTION_NAME \\\r\n    --couchbase-host localhost \\\r\n    --couchbase-bucket default \\\r\n    --trabajadores 20<\/pre>\n<p>El comando anterior nos permitir\u00e1 pasar cualquier bandera a la aplicaci\u00f3n como informaci\u00f3n del Servidor Couchbase, n\u00famero de goroutines de trabajadores, etc.<\/p>\n<p>Si tiene \u00e9xito, la exportaci\u00f3n a MongoDB deber\u00eda estar ahora presente en su base de datos Couchbase NoSQL.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Acabas de ver c\u00f3mo trabajar con Golang y MongoDB para importar los datos de tus colecciones a Couchbase.  Seguro que el c\u00f3digo que vimos puede ser optimizado, pero desde el punto de vista de la simplicidad estoy seguro de que puedes ver lo que est\u00e1bamos tratando de lograr.<\/p>\n<p>\u00bfQuieres descargarte este proyecto de importador y probarlo por ti mismo?  Lo he subido a <a href=\"https:\/\/github.com\/couchbaselabs\/collectionimport\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>con m\u00e1s instrucciones para ejecutarlo.  Ten en cuenta que no es oficial y que no se ha probado con grandes cantidades de datos.  T\u00f3melo como un ejemplo para aprender a satisfacer sus necesidades de migraci\u00f3n de datos.<\/p>\n<p>Si est\u00e1 interesado en obtener m\u00e1s informaci\u00f3n sobre Couchbase Server o el SDK de Golang, consulte la p\u00e1gina <a href=\"https:\/\/developer.couchbase.com\" target=\"_blank\" rel=\"noopener noreferrer\">Portal para desarrolladores de Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>If you&#8217;ve been keeping up, you&#8217;ll remember I wrote a few tutorials around converting your MongoDB powered Node.js applications to Couchbase. \u00a0These included a MongoDB Query Language to N1QL tutorial as well as a Mongoose to Ottoman tutorial. \u00a0These were [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1820],"tags":[1933,1866,1931,1502,1579,1934,1935],"ppma_author":[9032],"class_list":["post-3157","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-golang","tag-backup","tag-data","tag-export","tag-import","tag-parse","tag-restore","tag-script"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Import Your MongoDB Collection Data into Couchbase Server with Golang<\/title>\n<meta name=\"description\" content=\"Learn how to migrate your MongoDB Collection data into Couchbase Server with the mongoexport CLI and a very simple Golang script.\" \/>\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\/import-mongodb-collection-data-couchbase-server-golang\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Import Your MongoDB Collection Data into Couchbase Server with Golang\" \/>\n<meta property=\"og:description\" content=\"Learn how to migrate your MongoDB Collection data into Couchbase Server with the mongoexport CLI and a very simple Golang script.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/import-mongodb-collection-data-couchbase-server-golang\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-06T15:08:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-28T15:33:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, 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\/import-mongodb-collection-data-couchbase-server-golang\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Import Your MongoDB Collection Data into Couchbase Server with Golang\",\"datePublished\":\"2017-04-06T15:08:51+00:00\",\"dateModified\":\"2020-10-28T15:33:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/\"},\"wordCount\":1263,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"backup\",\"data\",\"export\",\"import\",\"parse\",\"restore\",\"script\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"GoLang\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/\",\"name\":\"Import Your MongoDB Collection Data into Couchbase Server with Golang\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-04-06T15:08:51+00:00\",\"dateModified\":\"2020-10-28T15:33:16+00:00\",\"description\":\"Learn how to migrate your MongoDB Collection data into Couchbase Server with the mongoexport CLI and a very simple Golang script.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#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\/import-mongodb-collection-data-couchbase-server-golang\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Import Your MongoDB Collection Data into Couchbase Server with Golang\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Importa los datos de tu colecci\u00f3n MongoDB al servidor Couchbase con Golang","description":"Aprende a migrar tus datos de MongoDB Collection a Couchbase Server con la CLI mongoexport y un script Golang muy sencillo.","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\/import-mongodb-collection-data-couchbase-server-golang\/","og_locale":"es_MX","og_type":"article","og_title":"Import Your MongoDB Collection Data into Couchbase Server with Golang","og_description":"Learn how to migrate your MongoDB Collection data into Couchbase Server with the mongoexport CLI and a very simple Golang script.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/import-mongodb-collection-data-couchbase-server-golang\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-04-06T15:08:51+00:00","article_modified_time":"2020-10-28T15:33:16+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Import Your MongoDB Collection Data into Couchbase Server with Golang","datePublished":"2017-04-06T15:08:51+00:00","dateModified":"2020-10-28T15:33:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/"},"wordCount":1263,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["backup","data","export","import","parse","restore","script"],"articleSection":["Best Practices and Tutorials","Couchbase Server","GoLang"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/","url":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/","name":"Importa los datos de tu colecci\u00f3n MongoDB al servidor Couchbase con Golang","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-04-06T15:08:51+00:00","dateModified":"2020-10-28T15:33:16+00:00","description":"Aprende a migrar tus datos de MongoDB Collection a Couchbase Server con la CLI mongoexport y un script Golang muy sencillo.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/import-mongodb-collection-data-couchbase-server-golang\/#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\/import-mongodb-collection-data-couchbase-server-golang\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Import Your MongoDB Collection Data into Couchbase Server with Golang"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3157","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=3157"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/3157\/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=3157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=3157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=3157"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=3157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}