{"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\/pt\/migrating-from-mongodb-to-couchbase-part-2\/","title":{"rendered":"Migra\u00e7\u00e3o de dados do MongoDB para o Couchbase, parte 2"},"content":{"rendered":"<h2>Prolog<\/h2>\n<p>O <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/migrating-data-from-mongodb-to-couchbase\/\">Artigo anterior<\/a> forneceu detalhes sobre como migrar um conjunto de dados do MongoDB para o Couchbase Server. Este artigo mostra como usar o SDK do Couchbase para acessar os dados por meio de um aplicativo de console Java. Os trechos de c\u00f3digo mostram como se conectar ao cluster do Couchbase, realizar opera\u00e7\u00f5es de chave\/valor e executar pesquisas secund\u00e1rias por meio de consultas N1QL lado a lado com o c\u00f3digo correspondente para fazer o mesmo com o SDK Java do Mongo.<\/p>\n<p>Todo o c\u00f3digo deste blog est\u00e1 dispon\u00edvel no seguinte reposit\u00f3rio Git: <a href=\"https:\/\/github.com\/dugbonsai\/mongodb-to-couchbase\">mongodb-to-couchbase<\/a>.<\/p>\n<h2>Pr\u00e9-requisitos<\/h2>\n<p>Um cluster do Couchbase contendo o conjunto de dados de acordo com os detalhes no <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/migrating-data-from-mongodb-to-couchbase\/\">Artigo anterior<\/a>.<\/p>\n<h2>Criar um usu\u00e1rio de aplicativo<\/h2>\n<p>Antes que um cliente (aplicativo) possa se conectar ao cluster do Couchbase Server, \u00e9 necess\u00e1rio definir um usu\u00e1rio do aplicativo que ser\u00e1 usado para autentica\u00e7\u00e3o pelo cliente. Couchbase <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-security\/manage-users-and-roles.html\">Controle de acesso baseado em fun\u00e7\u00e3o<\/a> permite definir usu\u00e1rios e atribuir a eles as fun\u00e7\u00f5es apropriadas. Use o console da Web para criar um usu\u00e1rio de aplicativo chamado <strong>mflix_client<\/strong> da seguinte forma.<\/p>\n<p>Ir para o <strong>Seguran\u00e7a<\/strong> no console da Web e clique em <strong>ADICIONAR USU\u00c1RIO<\/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>Configurar o <strong>mflix_client<\/strong> usu\u00e1rio da seguinte forma e clique em <strong>Adicionar usu\u00e1rio<\/strong>:<\/p>\n<ol>\n<li><strong>Nome de usu\u00e1rio<\/strong>: mflix_client<\/li>\n<li><strong>Senha<\/strong>: senha (ou qualquer senha de sua escolha).<\/li>\n<li><strong>Verificar senha<\/strong>: o mesmo que <strong>Senha<\/strong> valor acima.<\/li>\n<li><strong>Fun\u00e7\u00f5es<\/strong>: Expandir o <strong>sample_mflix<\/strong> e selecione <strong>Acesso a aplicativos<\/strong>. Usu\u00e1rios com o <a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/learn\/security\/roles.html#application-access\">Fun\u00e7\u00e3o de acesso a aplicativos<\/a> t\u00eam acesso total de leitura e grava\u00e7\u00e3o a todos os dados no bucket sample_mflix. A fun\u00e7\u00e3o n\u00e3o permite acesso ao Console da Web do Couchbase: ela se destina a aplicativos, e n\u00e3o a usu\u00e1rios.<\/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>No <strong>Seguran\u00e7a<\/strong> voc\u00ea ver\u00e1 o novo usu\u00e1rio 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>Criar \u00edndices para consultas N1QL<\/h2>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/indexes.html\">\u00cdndices secund\u00e1rios<\/a> no Couchbase Server suportam a execu\u00e7\u00e3o eficiente de consultas (ou pesquisas secund\u00e1rias) da mesma forma que os \u00edndices no MongoDB. Os exemplos de c\u00f3digo neste artigo executam <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\">Consultas N1QL<\/a> que usam dois \u00edndices que voc\u00ea criar\u00e1 ao executar as consultas N1QL. V\u00e1 para a se\u00e7\u00e3o <strong>Consulta<\/strong> no console da 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>O primeiro \u00edndice est\u00e1 no atributo name de todos os documentos de coment\u00e1rios no bucket sample_mflix. Insira a seguinte instru\u00e7\u00e3o N1QL no arquivo <strong>Editor de consultas:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX idx1 on sample_mflix(name) WHERE type=\"comment\"<\/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>Clique em <strong>Executar<\/strong> e, ap\u00f3s alguns instantes, o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">cria\u00e7\u00e3o 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>O segundo \u00edndice est\u00e1 nos atributos year, imdb.rating e title de todos os documentos de filmes no bucket sample_mflix. Digite a seguinte instru\u00e7\u00e3o N1QL no arquivo <strong>Editor de consultas<\/strong>:<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX idx2 on sample_mflix(year, imdb.rating, title) WHERE type=\"movie\"<\/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>Clique em <strong>Executar<\/strong> e, ap\u00f3s alguns instantes, a cria\u00e7\u00e3o do \u00edndice estar\u00e1 conclu\u00edda:<\/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 para o <strong>\u00cdndices<\/strong> no console da Web para verificar se os \u00edndices <strong>idx1<\/strong> &amp; <strong>idx2<\/strong> existem:<\/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>Converter chamadas de API do MongoDB em chamadas de API do Couchbase<\/h2>\n<p>O c\u00f3digo de amostra deste artigo usa os SDKs Java do Couchbase e do MongoDB e \u00e9 fornecido apenas como um exemplo de como usar algumas das APIs do SDK. Consulte os links a seguir para obter a documenta\u00e7\u00e3o completa do SDK do Couchbase para seu 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\">Ir<\/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>Conectar-se ao servidor Couchbase<\/h3>\n<p>Para acessar os recursos do cluster, os clientes devem <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/sdk-authentication-overview.html\">autenticar<\/a> passando as credenciais apropriadas para o Couchbase Server. O c\u00f3digo de exemplo usa as credenciais de usu\u00e1rio do aplicativo mflix_client criadas acima para autentica\u00e7\u00e3o.<\/p>\n<p>O exemplo de c\u00f3digo a seguir se conecta ao cluster do Couchbase em execu\u00e7\u00e3o no n\u00f3 especificado, obt\u00e9m uma refer\u00eancia ao bucket mflix_client e uma refer\u00eancia \u00e0 cole\u00e7\u00e3o padr\u00e3o nesse 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\nCollection collection = 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 um documento por ID<\/h3>\n<p>Use o <strong>Cole\u00e7\u00e3o.get()<\/strong> m\u00e9todo para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#retrieving-documents\">recuperar documentos completos<\/a> por ID. O exemplo de c\u00f3digo a seguir recupera dois documentos da cole\u00e7\u00e3o padr\u00e3o do bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ get() lan\u00e7ar\u00e1 uma exce\u00e7\u00e3o se n\u00e3o existir um documento com o 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>Inserir um novo documento<\/h3>\n<p>Use o <strong>Collection.insert()<\/strong> m\u00e9todo para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#insert\">criar um novo documento<\/a> com o ID e o conte\u00fado especificados, se ele ainda n\u00e3o existir. O exemplo de c\u00f3digo a seguir insere esse documento na cole\u00e7\u00e3o padr\u00e3o do bucket sample_mflix:<\/p>\n<pre class=\"lang:java decode:true\">{\r\n  \"nome\": \"Anat Chase\",\r\n  \"email\": \"anat_chase@fakegmail.com\",\r\n  \"movie_id\":\"movie:573a1390f29313caabcd4135\",\r\n  \"text\": \"Esta \u00e9 a 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(\"name\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4135\")\r\n  .put(\"text\", \"This is Anat's review\")\r\n  .put(\"type\", \"comment\");\r\n\r\n\/\/ insert() lan\u00e7ar\u00e1 uma exce\u00e7\u00e3o se j\u00e1 existir um documento com o 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(\"name\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4135\"))\r\n  .append(\"text\", \"This is Anat's review\");\r\n\r\ncomments.insertOne(doc);<\/pre>\n<h3>Inserir v\u00e1rios documentos novos<\/h3>\n<p><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/concurrent-async-apis.html#batching\">Opera\u00e7\u00f5es de loteamento<\/a> permite que voc\u00ea utilize melhor a sua rede e acelere o seu aplicativo, aumentando o rendimento da rede e reduzindo a lat\u00eancia. As opera\u00e7\u00f5es em lote funcionam da seguinte forma\u00a0<em>pipelining<\/em>\u00a0solicita\u00e7\u00f5es pela rede. Quando as solicita\u00e7\u00f5es s\u00e3o canalizadas, elas s\u00e3o enviadas em um grande grupo para o cluster. O cluster, por sua vez\u00a0<em>dutos<\/em>\u00a0respostas de volta para o cliente.<\/p>\n<p>O exemplo de c\u00f3digo a seguir usa essa abordagem para inserir dois novos documentos no bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ Criar dois documentos JSON\r\nList&lt;Tuple2&gt; documents = new ArrayList&lt;Tuple2&gt;();\r\ndoc = JsonObject.create()\r\n  .put(\"name\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd42e8\")\r\n  .put(\"text\", \"This is Anat's review\")\r\n  .put(\"type\", \"comment\");\r\ndocuments.add(Tuples.of(\"comment:5a9427648b0beebeb69579c1\", doc));\r\n\r\nJsonObject doc2 = JsonObject.create()\r\n  .put(\"name\", \"Anat Chase\")\r\n  .put(\"email\", \"anat_chase@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4323\")\r\n  .put(\"text\", \"This is Anat's review\")\r\n  .put(\"type\", \"comment\");\r\ndocuments.add(Tuples.of(\"comment:5a9427648b0beebeb69579c2\", doc2));\r\n\r\n\/\/ Insira os 2 documentos em um lote, esperando at\u00e9 que o \u00faltimo seja conclu\u00eddo.\r\n\/\/ insert() lan\u00e7ar\u00e1 uma exce\u00e7\u00e3o se j\u00e1 existir um documento com o ID especificado\r\nFluxo\r\n  .fromIterable(documents)\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    .sequential().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(\"name\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd42e8\"))\r\n  .append(\"text\", \"This is Anat's review\");\r\ndocuments.add(doc1);\r\n\r\nDocumento doc2 = novo Documento(\"_id\", novo ObjectId(\"5a9427648b0beebeb69579c2\"))\r\n  .append(\"name\", \"Anat Chase\")\r\n  .append(\"email\", \"anat_chase@fakegmail.com\")\r\n  .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4323\"))\r\n  .append(\"text\", \"This is Anat's review\");\r\ndocuments.add(doc2);\r\n\r\ncoment\u00e1rios.insertMany(documentos);<\/pre>\n<h3>Atualizar um documento existente<\/h3>\n<p>Use o <strong>Collection.replace()<\/strong> m\u00e9todo para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#replace\">atualizar um documento existente<\/a> com o ID especificado somente se ele j\u00e1 existir. O Couchbase suporta <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/subdocument-operations.html\">opera\u00e7\u00f5es de subdocumentos<\/a> que pode ser usado para acessar eficientemente\u00a0<em>pe\u00e7as<\/em>\u00a0de documentos. As opera\u00e7\u00f5es de subdocumentos podem ser mais r\u00e1pidas e mais eficientes em termos de rede do que\u00a0<em>documento completo\u00a0<\/em>porque transmitem apenas as se\u00e7\u00f5es acessadas do documento pela rede. As opera\u00e7\u00f5es de documento completo e subdocumento s\u00e3o at\u00f4micas, permitindo modifica\u00e7\u00f5es seguras em documentos com controle de simultaneidade integrado.<\/p>\n<p>O exemplo de c\u00f3digo a seguir usa opera\u00e7\u00f5es de subdocumento para atualizar o atributo de texto de um documento especificado.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ Atualizar um documento usando a API de subdocumento para modificar o(s) atributo(s) espec\u00edfico(s)\r\n\/\/ replace() lan\u00e7ar\u00e1 uma exce\u00e7\u00e3o se n\u00e3o existir um documento com o ID especificado\r\ncollection.mutateIn(\r\n  \"comment:5a9427648b0beebeb69579c0\",\r\n  Arrays.asList(replace(\"text\", \"This is not Anat's review\")));<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">coment\u00e1rios.updateOne(\r\n  Filtros.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\")),\r\n  Updates.combine(Updates.set(\"text\", \"\")));<\/pre>\n<h3>Atualizar v\u00e1rios documentos<\/h3>\n<p>Al\u00e9m do acesso prim\u00e1rio por meio de APIs de chave\/valor, voc\u00ea tamb\u00e9m pode <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/n1ql-queries-with-sdk.html\">executar consultas N1QL<\/a> por meio das APIs N1QL. <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\">N1QL<\/a> \u00e9 uma linguagem declarativa para consulta, transforma\u00e7\u00e3o e manipula\u00e7\u00e3o de dados JSON - pense em SQL para JSON.<\/p>\n<p>O exemplo de c\u00f3digo a seguir executa uma consulta N1QL para atualizar os atributos de nome e e-mail de todos os documentos de coment\u00e1rios em que o nome \u00e9 Anat Chase. Essa consulta usa a fun\u00e7\u00e3o <strong>idx1<\/strong> criado acima.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ executar uma consulta N1QL UPDATE por meio da API de consulta\r\nDeclara\u00e7\u00e3o String =\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\">coment\u00e1rios.updateMany(\r\n  Filtros.eq(\"nome\", \"Anat Chase\"),\r\n  Atualiza\u00e7\u00f5es.combine(\r\n    Atualiza\u00e7\u00f5es.set(\"nome\", \"Anita Chase\"),\r\n    Updates.set(\"email\", \"anita_chase@fakegmail.com\")));<\/pre>\n<h3>Atualizar ou inserir um documento<\/h3>\n<p>Use o <strong>Collection.upsert()<\/strong> m\u00e9todo para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#upsert\">inserir o documento, caso ele n\u00e3o exista, ou substitu\u00ed-lo, caso exista<\/a>. Se n\u00e3o existir um documento com o ID especificado, upsert() criar\u00e1 um novo documento. Se existir um documento com o ID especificado, upsert() atualizar\u00e1 o documento existente. O exemplo de c\u00f3digo a seguir atualiza um documento existente no bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">doc = JsonObject.create()\r\n  .put(\"name\", \"Mia Hannas\")\r\n  .put(\"email\", \"mia_hannas@fakegmail.com\")\r\n  .put(\"movie_id\", \"movie:573a1390f29313caabcd4135\")\r\n  .put(\"text\", \"This is Mia's review\")\r\n  .put(\"type\", \"comment\");\r\n\r\n\/\/ upsert() atualizar\u00e1 o documento se ele existir ou inserir\u00e1 o documento se ele n\u00e3o existir\r\ncollection.upsert(\"comment:5a9427648b0beebeb69579c0\", doc);<\/pre>\n<p><u>MongoDB<\/u><\/p>\n<pre class=\"lang:java decode:true\">collection.replaceOne(\r\n  Filtros.eq(\"_id\", new ObjectId(\"5a9427648b0beebeb69579c0\")),\r\n  new Document(\"name\", \"Mia Hannas\")\r\n    .append(\"email\", \"mia_hannas@fakegmail.com\")\r\n    .append(\"movie_id\", new ObjectId(\"573a1390f29313caabcd4135\"))\r\n    .append(\"text\", \"This is Mia's review\"),\r\n  new UpdateOptions().upsert(true));<\/pre>\n<h3>Excluir um documento<\/h3>\n<p>Use o <strong>Collection.remove()<\/strong> m\u00e9todo para <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/kv-operations.html#removing\">remover um documento completo<\/a> com o ID especificado. O exemplo de c\u00f3digo a seguir exclui um documento existente do bucket sample_mflix.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ remove() lan\u00e7ar\u00e1 uma exce\u00e7\u00e3o se o documento n\u00e3o existir\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>Excluir v\u00e1rios documentos<\/h3>\n<p>Voc\u00ea tamb\u00e9m pode usar consultas N1QL para excluir documentos. O exemplo de c\u00f3digo a seguir executa uma consulta N1QL para excluir v\u00e1rios documentos do bucket sample_mflix. Todos os documentos de coment\u00e1rios em que o nome \u00e9 Anita Chase ser\u00e3o exclu\u00eddos. Essa consulta usa o par\u00e2metro <strong>idx1<\/strong> criado acima.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:java decode:true\">\/\/ executar uma consulta N1QL DELETE por meio da API de consulta\r\nString statement = \"DELETE FROM sample_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(\"name\", \"Anita Chase\"));<\/pre>\n<h3>Acesso a dados com N1QL<\/h3>\n<p>O N1QL tamb\u00e9m pode ser usado para realizar pesquisas secund\u00e1rias de dados mais complicadas. O exemplo de c\u00f3digo a seguir executa uma consulta N1QL de bloqueio para selecionar o t\u00edtulo, o ano e o imdb.rating de todos os documentos de filmes em que o ano est\u00e1 entre 1970 e 1979, ordenados pelo imdb.rating. A consulta usa a fun\u00e7\u00e3o <strong>idx2<\/strong> criado acima.<\/p>\n<p>Semelhante a <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/concurrent-async-apis.html#batching\">opera\u00e7\u00f5es reativas de chave\/valor em lote<\/a>, <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/n1ql-queries-with-sdk.html#reactive-and-async-apis\">consultas reativas e ass\u00edncronas<\/a> deve ser usado para melhorar o desempenho.<\/p>\n<p><u>Couchbase<\/u><\/p>\n<pre class=\"lang:default decode:true\">\/\/ executar uma consulta N1QL SELECT (bloqueando) por meio da 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\nQueryResult final selectResult = cluster.query(selectStatement);\r\npara (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(Filters.and(Filters.gte(\"year\", 1970), Filters.lte(\"year\", 1979)))\r\n  .sort(Sorts.descending(\"imdb.rating\"))\r\n  .projection(Projections.fields(\r\n    Projections.include(\"title\", \"year\", \"imdb.rating\"),\r\n    Projections.excludeId()));<\/pre>\n<h2><strong>O que vem a seguir<\/strong><\/h2>\n<p>Explore os outros recursos do SDK do Couchbase, incluindo <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/analytics-using-sdk.html\">An\u00e1lises<\/a> e <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/3.0\/howtos\/full-text-searching-with-sdk.html\">Pesquisa de texto completo<\/a>. Aproveite nosso treinamento on-line gratuito, dispon\u00edvel em <a href=\"https:\/\/learn.couchbase.com\/\">https:\/\/learn.couchbase.com<\/a> para saber mais sobre o Couchbase.<\/p>\n<p>Para obter informa\u00e7\u00f5es detalhadas sobre as vantagens arquitet\u00f4nicas do Couchbase Data Platform em rela\u00e7\u00e3o ao MongoDB, consulte este documento: <a href=\"https:\/\/drive.google.com\/file\/d\/14YQuCAGSsvNcnlBJkM6QnnLNzo3GadTk\/view\">Couchbase: Melhor que o MongoDB em todos os sentidos<\/a>.<\/p>\n<p>Saiba por que outras empresas escolhem o Couchbase em vez do MongoDB:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/customers\/directv\/\">DIRECTV<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/customers\/viber\/\">Viber<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/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\">Grampos<\/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 v26.2 (Yoast SEO v26.2) - 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\/pt\/migrating-from-mongodb-to-couchbase-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/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\/pt\/migrating-from-mongodb-to-couchbase-part-2\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/migrating-from-mongodb-to-couchbase-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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, Engenheiro de Solu\u00e7\u00f5es Principal, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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 \u00e9 engenheiro de solu\u00e7\u00f5es principal da Couchbase e trabalha com TI e tecnologia desde 1991. Ele mora na regi\u00e3o de Dallas\/Ft. Worth.","url":"https:\/\/www.couchbase.com\/blog\/pt\/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 \u00e9 engenheiro de solu\u00e7\u00f5es principal da Couchbase e trabalha com TI e tecnologia desde 1991. Ele mora na regi\u00e3o de Dallas\/Ft. Worth."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1352"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7770"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7770\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7289"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7770"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}