{"id":17018,"date":"2025-04-09T13:12:03","date_gmt":"2025-04-09T20:12:03","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17018"},"modified":"2025-04-22T08:31:29","modified_gmt":"2025-04-22T15:31:29","slug":"mongodb-to-couchbase-migration-guide","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/","title":{"rendered":"MongoDB to Couchbase &#8211; Migrations Tips"},"content":{"rendered":"<p>So you are considering moving from MongoDB to Couchbase. We think that is a great idea, but we get it, you want to know how much work it will be and is it worth it. The answer for both is, like much in life, \u201cit depends\u201d. This post is an attempt to give you more info on both.<\/p>\n<h2>Why make the move to Couchbase?<\/h2>\n<p>Couchbase\u2019s JSON document model is flexible, like MongoDB and other document databases, with support for a wide variety of workloads and use cases, but with several big benefits, including:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><b>Real-time performance<\/b>: Memory-first architecture with built-in caching delivers low-latency read and write operations, see our benchmark reports:\n<ul>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/content\/c\/altoros-report-2023-nosql-dbaas-performance-couchbase-capella-mongodb-atlas?x=gMxyf9\">3rd party benchmark &#8211; Altoros<\/a><\/li>\n<li aria-level=\"2\"><a href=\"https:\/\/benchant.com\/ranking\/database-ranking\">3rd party benchmark &#8211; BenchAnt<\/a><\/li>\n<\/ul>\n<\/li>\n<li aria-level=\"1\"><b>Powerful query language<\/b>: SQL++ with supporting JOINs, aggregations, and complex queries<\/li>\n<li aria-level=\"1\"><b>AI Services<\/b>: Design to accelerate AI development and integration within your apps<\/li>\n<li aria-level=\"1\"><b>Real-time analytics<\/b>: Massively parallel processing with a JSON-native columnar engine<\/li>\n<li aria-level=\"1\"><b>Proven mobile solution<\/b>: Used by many of the world\u2019s leading companies\n<ul>\n<li aria-level=\"2\">MongoDB has recently <b>deprecated their Realm product<\/b> line, ending support in September of 2025<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Customer examples who chose Couchbase over MongoDB:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">Small and medium-sized businesses\n<ul>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/blog\/why-couchbase-is-important-in-igaming\/\">Egaming customer<\/a><\/li>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/customers\/jinmu\/\">Jinmu<\/a> &#8211; IT Services, AI assistant<\/li>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/blog\/3-reasons-enterprises-turn-from-mongodb-to-couchbase\/\">Microlise<\/a> &#8211; Fleet and logistics management<\/li>\n<\/ul>\n<\/li>\n<li aria-level=\"1\">Enterprises\n<ul>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/customers\/fico\/\">FICO<\/a> &#8211; Real-time fraud detection<\/li>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/customers\/cisco\/\">Cisco<\/a> &#8211; On-demand TV service<\/li>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/customers\/equifax\/\">Equifax<\/a> &#8211; Credit lending platform<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>How to move from MongoDB to Couchbase<\/h3>\n<p>The following is a <b>strategy<\/b> to aid your migration, starting with the basics and then following up with the actual migration process and post-migration steps.<\/p>\n<h2>The basics<\/h2>\n<p><strong>Understand the key differences<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><b>Data Model<\/b>: Both are document-based. Couchbase uses <b>JSON documents<\/b>; MongoDB uses BSON (which can be exported to JSON).<\/li>\n<li aria-level=\"1\"><b>Query Language<\/b>: MongoDB uses <b>MQL (MongoDB Query Language)<\/b>, while Couchbase uses <b>SQL++, <\/b>which extends industry standard SQL to work with JSON<\/li>\n<li aria-level=\"1\"><b>Architecture<\/b>: Couchbase has <b>memory-first architecture<\/b>, built-in <b>distributed caching<\/b>, and <b>stronger support for scalability<\/b><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Define your migration goals<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">Are you migrating <b>everything<\/b> or only a <b>subset<\/b> of data?<\/li>\n<li aria-level=\"1\">How will you <b>minimize downtime<\/b> during migration?<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>The migration (data and application changes)<\/h2>\n<h4>Choose a data migration approach<\/h4>\n<p>There are two main strategies:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><b>Direct data migration<\/b>, which involves copying a snapshot of data from MongoDB and importing into Couchbase<\/li>\n<li aria-level=\"1\"><b>Incremental migration<\/b>, which involves live synchronization of data from MongoDB into Couchbase<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5>Direct data migration (full dump &amp; load)<\/h5>\n<p>Recommended if:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">You have a <b>manageable amount of data<\/b><\/li>\n<li aria-level=\"1\"><b>Downtime is acceptable<\/b> during migration<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>A manageable amount of data for a one-time dump and load from MongoDB to Couchbase depends on multiple factors like hardware specs, network speed, and indexing needs. However, here are some general guidelines based on the number of documents:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><b>Under 10 million documents<\/b> \u2192 Generally straightforward<\/li>\n<li aria-level=\"1\"><b>10M &#8211; 100M documents<\/b> \u2192 Requires tuning batch sizes, indexing strategies (consider post-loading at least some indexes)<\/li>\n<li aria-level=\"1\"><b>100M &#8211; 500M documents<\/b> \u2192 May need parallelized loading, post-loading indexes<\/li>\n<li aria-level=\"1\"><b>500M+ documents<\/b> \u2192 Likely better suited for staged migration or streaming approach<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Steps<\/b><\/p>\n<p>You can use <a href=\"https:\/\/www.couchbase.com\/blog\/migrate-from-mongodb-to-couchbase\/\">cbmigrate<\/a>, a tool that&#8217;s part of the <a href=\"https:\/\/docs.couchbase.com\/server\/current\/cli\/cli-intro.html\">Couchbase CLI collection<\/a>. However, it will likely be easier to use the Couchbase IDE plugins for VSCode or JetBrains, which provide development tools, as well as a GUI wrapper for <i>cbmigrate<\/i>. Here are the steps for using VSCode:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li aria-level=\"1\">Install <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=Couchbase.vscode-couchbase\">VSCode Couchbase extension<\/a><\/li>\n<li aria-level=\"1\">Connect to the Couchbase cluster that you wish to migrate MongoDB data\/indexes into. If you don&#8217;t have a cluster setup already, you can create a <a href=\"https:\/\/cloud.couchbase.com\/sign-up\">free cluster on Couchbase Capella<\/a>.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17019\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image2.png\" alt=\"Migrate from MongoDB to Couchbase\" width=\"529\" height=\"631\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image2.png 529w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image2-252x300.png 252w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image2-300x358.png 300w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/li>\n<li aria-level=\"1\">Right-click on the cluster connection, select <b>Tools<\/b> &gt; <b>MongoDB Migrate<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17020\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image5.png\" alt=\"MongoDB migrate tool\" width=\"510\" height=\"443\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image5.png 510w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image5-300x261.png 300w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/b><\/li>\n<li aria-level=\"1\">Enter your MongoDB connection information, press <b>Connect<\/b>, and select the database\/collections you wish to migrate. Then, select the target location in Couchbase (bucket + scope). You can also migrate indexes, but this is optional.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17021\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image1.png\" alt=\"Data migration tool MongoDB to Couchbase\" width=\"585\" height=\"763\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image1.png 585w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image1-230x300.png 230w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image1-300x391.png 300w\" sizes=\"auto, (max-width: 585px) 100vw, 585px\" \/><\/li>\n<li aria-level=\"1\">Click <b>Migrate<\/b> to continue. In the terminal output, you will notice that <b>cbmigrate<\/b> is being used.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17022\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image4.png\" alt=\"\" width=\"554\" height=\"341\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image4.png 554w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image4-300x185.png 300w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/li>\n<li aria-level=\"1\">You can use the Couchbase plugin to continue to interact with the migrated data. For instance, to browse collections, documents, and indexes.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17023\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image3.png\" alt=\"\" width=\"865\" height=\"296\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image3.png 865w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image3-300x103.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image3-768x263.png 768w\" sizes=\"auto, (max-width: 865px) 100vw, 865px\" \/><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h5>Incremental migration (live sync)<\/h5>\n<p>Recommended if:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">Your dataset is <b>large<\/b><\/li>\n<li aria-level=\"1\"><b>Zero downtime is required<\/b><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>There are multiple methods and tools for streaming data from MongoDB to Couchbase. A common tool that your organization may already be using is Kafka (and\/or Confluent). Couchbase provides an <a href=\"https:\/\/docs.couchbase.com\/kafka-connector\/current\/quickstart.html\">officially supported Kafka connector<\/a>, and MongoDB provides an <a href=\"https:\/\/www.mongodb.com\/docs\/kafka-connector\/current\/\">officially supported connector<\/a> as well.<\/p>\n<p><b>Steps<\/b><\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li aria-level=\"1\">You will need a Kafka (with Kafka Connect, Zookeeper, etc) or Confluent instance already installed and setup<\/li>\n<li aria-level=\"1\">Install the MongoDB <b>source<\/b> connector (place the JAR file in the plugin path, or enable the <a href=\"https:\/\/www.confluent.io\/hub\/mongodb\/kafka-connect-mongodb\">MongoDB connector in Confluent<\/a>)<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\/connect\/references\/restapi.html#post--connectors\">Setup connector configuration<\/a>. Consult the <a href=\"https:\/\/www.mongodb.com\/docs\/kafka-connector\/current\/sink-connector\/configuration-properties\/\">documentation for all the <b>source <\/b>options<\/a>. It will look similar to:\n<pre class=\"nums:false lang:default decode:true\">\"config\": {\r\n  \"connector.class\": \"com.mongodb.kafka.connect.MongoSourceConnector\",\r\n  \"connection.uri\": \"mongodb:\/\/mongoconnectionstring:27017\",\r\n  \"database\": \"yourDatabase\",\r\n  \"collection\": \"yourCollection\",\r\n  \"topic.prefix\": \"mongo\",\r\n  \"startup.mode\": \"copy_existing\",\r\n  \"poll.max.batch.size\": 1000,\r\n  \"poll.await.time.ms\": 500\r\n}<\/pre>\n<p><b>Note<\/b>: if you want to migrate all collections, omit the collection property from configuration.<\/li>\n<li aria-level=\"1\">Install the Couchbase <b>sink <\/b>connector (place the JAR file in the plugin path, or enable the <a href=\"https:\/\/www.confluent.io\/hub\/couchbase\/kafka-connect-couchbase\">Couchbase connector in Confluent<\/a>)<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.confluent.io\/platform\/current\/connect\/references\/restapi.html#post--connectors\">Setup connector configuration<\/a>. Consult the <a href=\"https:\/\/docs.couchbase.com\/kafka-connector\/current\/sink-configuration-options.html\">documentation for all the <b>sink <\/b>options<\/a>. It will look similar to:\n<pre class=\"nums:false lang:js decode:true\">\"config\": {\r\n  \"connector.class\": \"com.couchbase.connect.kafka.CouchbaseSinkConnector\",\r\n  \"tasks.max\": \"1\",\r\n  \"connection.cluster_address\": \"couchbase:\/\/cbconnectionstring\",\r\n  \"connection.bucket\": \"yourBucket\",\r\n  \"connection.username\": \"yourUsername\",\r\n  \"connection.password\": \"yourPassword\",\r\n  \"topics\": \"mongo.yourDatabase.*\",\r\n  \"couchbase.topic.to.collection\":\r\n  \"mongo.yourDatabase.users=default_scope.users, ... etc ...\",\r\n  \"couchbase.document.id\": \"${\/id}\",\r\n  \"couchbase.persist.to\": \"NONE\",\r\n  \"couchbase.replicate.to\": \"NONE\",\r\n  \"couchbase.retry.max.duration\": \"5m\"\r\n}\r\n<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p style=\"padding-left: 40px;\"><b>Note<\/b>: This configuration will subscribe to all topics (which each correspond to a collection in Mongo and a collection in Couchbase). Make sure the collections already exist in Couchbase.<\/p>\n<p>Once these connectors have been set up, data will start to flow from Mongo to Couchbase. Any changes to Mongo will automatically make their way to Couchbase as well. This allows you to run both concurrently, keeping Couchbase up-to-date to the point you are ready to switch over the application.<\/p>\n<hr \/>\n<h2>Update your application code<\/h2>\n<p>Whether you use the incremental or direct migration approach, you will likely need to update your application code.<\/p>\n<p>This may include:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">Modify queries to use <b>SQL++<\/b> instead of <b>MQL<\/b>.<\/li>\n<li aria-level=\"1\">Use <b>Couchbase SDKs<\/b> for Python, Java, Node.js, etc.<\/li>\n<li aria-level=\"1\">Use Couchbase framework integrations for Spring, EF Core, Node.js, etc.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>There is no &#8220;easy button&#8221; for this portion of the migration. The length of the process will depend on how the code is architected, which framework(s) the application is using, and how many queries need to be converted from Mongo&#8217;s MQL language to Couchbase&#8217;s SQL++.<\/p>\n<p>Here are some general tips and tools:<\/p>\n<h3>Use the Couchbase SDKs<\/h3>\n<p>Couchbase has <a href=\"https:\/\/docs.couchbase.com\/home\/sdk.html\">SDKs<\/a> available for 11 languages, including .NET, Go, Java, Node.js, and more. You will need to add the appropriate SDK to your project. There are quick starts available for each SDK. For instance, with <a href=\"https:\/\/docs.couchbase.com\/dotnet-sdk\/current\/hello-world\/start-using-sdk.html\">.NET, you can use NuGet<\/a>; for <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/hello-world\/start-using-sdk.html\">Java, you can use Maven<\/a>; for <a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/hello-world\/start-using-sdk.html\">Node.js, you can use npm<\/a>; etc.<\/p>\n<p>The table below shows examples in Node.js. Couchbase&#8217;s approach to SDKs is to be as idiomatic to the language as possible, but basic operations will look similar in all SDKs.<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Operation<\/b><\/td>\n<td><b>Couchbase<\/b><\/td>\n<td><b>MongoDB<\/b><\/td>\n<\/tr>\n<tr>\n<td>Connect<\/td>\n<td><code>const cluster = await couchbase.connect(...)<\/code><\/p>\n<p><code>collection = bucket.scope('scopename').collection('collectionname'')<\/code><\/td>\n<td><code>client = new MongoClient(...)<\/code><\/p>\n<p><code>collection = database.collection('collectionname');<\/code><\/td>\n<\/tr>\n<tr>\n<td>Get<\/td>\n<td><code>doc = await collection.get('documentId')<\/code><\/td>\n<td><code>doc = await movies.findOne({ _id: 'documentId'});<\/code><\/td>\n<\/tr>\n<tr>\n<td>Insert<\/td>\n<td><code>await collection.upsert('documentId', obj)<\/code><\/td>\n<td><code>await collection.insertOne(obj);<\/code><\/td>\n<\/tr>\n<tr>\n<td>Delete<\/td>\n<td><code>await collection.remove('documentId')<\/code><\/td>\n<td><code>await collection.deleteOne({ _id: 'documentId' })<\/code><\/td>\n<\/tr>\n<tr>\n<td>Query<\/td>\n<td><code>result = await cluster.query(\"SELECT \u2026\")<\/code><\/td>\n<td><code>result = collection.find({ . . . })<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Modify queries to use SQL++<\/h3>\n<p>MongoDB queries (sometimes called MQL) use a combination of <b>find<\/b>, <b>findOne<\/b>, <b>aggregate<\/b>, and other methods. Couchbase uses SQL++, with <b>SELECT<\/b>, <b>INSERT<\/b>, <b>DELETE<\/b>, etc.<\/p>\n<p>Familiarity with SQL will help you to &#8220;translate&#8221; these queries. MongoDB documentation often shows <a href=\"https:\/\/www.mongodb.com\/docs\/manual\/tutorial\/query-documents\/\">corresponding SQL examples<\/a> that can help you get started.<\/p>\n<p>Here are some examples that may help you get started:<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>MongoDB<\/b><\/td>\n<td><b>SQL++<\/b><\/td>\n<td><b>Notes<\/b><\/td>\n<\/tr>\n<tr>\n<td><code>find({ key: value })<\/code><\/td>\n<td><code>SELECT * FROM collection WHERE key = \"value\"<\/code><\/td>\n<td>Direct match query<\/td>\n<\/tr>\n<tr>\n<td><code>find({ age: { $gt: 25 } })<\/code><\/td>\n<td><code>SELECT * FROM collection WHERE age &gt; 25<\/code><\/td>\n<td>Simple comparison<\/td>\n<\/tr>\n<tr>\n<td><code>find({ $or: [{ age: { $gt: 25 } }, { name: \"Alice\" }] })<\/code><\/td>\n<td><code>SELECT * FROM collection WHERE age &gt; 25 OR name = \"Alice\"<\/code><\/td>\n<td>Logical OR<\/td>\n<\/tr>\n<tr>\n<td><code>find({}, { name: 1, _id: 0 })<\/code><\/td>\n<td><code>SELECT name FROM collection<\/code><\/td>\n<td>Projection (selecting specific fields)<\/td>\n<\/tr>\n<tr>\n<td><code>find().sort({ age: -1 })<\/code><\/td>\n<td><code>SELECT * FROM collection ORDER BY age DESC<\/code><\/td>\n<td>Sorting<\/td>\n<\/tr>\n<tr>\n<td><code>find().skip(5).limit(10)<\/code><\/td>\n<td><code>SELECT * FROM collection LIMIT 10 OFFSET 5<\/code><\/td>\n<td>Pagination<\/td>\n<\/tr>\n<tr>\n<td><code>aggregate([{ $group: { _id: \"$city\", count: { $sum: 1 } } }])<\/code><\/td>\n<td><code>SELECT city, COUNT(*) AS count FROM collection GROUP BY city<\/code><\/td>\n<td>Grouping<\/td>\n<\/tr>\n<tr>\n<td><code>db.collection.aggregate([<\/code><code>{ $lookup: {<\/code><br \/>\n<code>  from: \"orders\",<\/code><br \/>\n<code>  localField: \"_id\",<\/code><br \/>\n<code>  foreignField: \"userId\",<\/code><br \/>\n<code>  as: \"orders\"<\/code><br \/>\n<code> }<\/code><br \/>\n<code>}<\/code><br \/>\n<code>])<\/code><\/td>\n<td><code>SELECT u.name, o.* FROM `users` u JOIN `orders` o ON u.id = o.userId<\/code><\/td>\n<td>Joining<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Further, it may be useful to engage an LLM like ChatGPT or <a href=\"https:\/\/docs.couchbase.com\/cloud\/get-started\/capella-iq\/get-started-with-iq.html\">Capella iQ<\/a> to assist you in &#8220;translating&#8221; a MongoDB query into Couchbase SQL++. Here&#8217;s an example of using Capella iQ on the data that was migrated earlier (using <i>cbmigrate<\/i>).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17024\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6.png\" alt=\"AI rewrite MongoDB query to SQL\" width=\"554\" height=\"557\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6.png 554w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6-298x300.png 298w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6-150x150.png 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6-50x50.png 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/image6-300x302.png 300w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/p>\n<p>Keep in mind that this may not always work and\/or may not give the most optimal examples, but will always help to get you moving.<\/p>\n<h3>Frameworks<\/h3>\n<p>If your application is using a framework to access data, it&#8217;s possible that there&#8217;s an equivalent for Couchbase that can help to ease the transition. Some of these frameworks may have official Couchbase support, and some may only have community support:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/spring.io\/projects\/spring-data-couchbase\/\">Spring Data Couchbase<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/ottomanjs.com\/\">Ottoman.js<\/a> (similar API to Mongoose)<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/couchbaselabs\/Linq2Couchbase\">Linq2Couchbase<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-efcore-provider\">EF Core<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/www.couchbase.com\/developers\/integrations\/langchain\/\">LangChain<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/www.couchbase.com\/developers\/integrations\/llamaindex\/\">LlamaIndex<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>To browse more, check out the <a href=\"https:\/\/www.couchbase.com\/developers\/integrations\/\">Couchbase Integrations and Tools listing<\/a>.<\/p>\n<hr \/>\n<h2>Post Migration<\/h2>\n<h3>Performance tuning &amp; testing<\/h3>\n<p>Once your data, indexes, and application code has been migrated over, here are some suggestions for making optimal use of Couchbase:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\"><b>Benchmark Queries<\/b>: Optimize SQL++ queries for performance. Indexes in MongoDB that are migrated may or may not be the optimal index for a given query. In the Query Workbench, you can use Index Advisor to suggest indexes that may be more efficient. You can use <a href=\"https:\/\/docs.couchbase.com\/server\/current\/tools\/query-workbench.html#index-advisor\">Index Advisor in Couchbase Server<\/a> or <a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/query-service\/query-workbench.html#index-advice\">Index Advisor in Couchbase Capella<\/a>.<\/li>\n<li aria-level=\"1\"><b>Monitor Performance<\/b>: Use Couchbase\u2019s <b>performance dashboards<\/b> to monitor key metrics. You can also use <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/monitor\/set-up-prometheus-for-monitoring.html\">Prometheus with Couchbase Server<\/a> or <a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/monitoring\/prometheus.html\">Prometheus with Couchbase Capella<\/a>.<\/li>\n<li aria-level=\"1\">You may want to explore Couchbase&#8217;s replication, sync, and backup features.\n<ul>\n<li aria-level=\"2\"><a href=\"https:\/\/www.couchbase.com\/products\/xdcr\/\">XDCR<\/a> automatically syncs data between Couchbase clusters.<\/li>\n<li aria-level=\"2\">Capella allows you to <a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/backup-restore.html\">backup\/restore individual buckets<\/a> or <a href=\"https:\/\/docs.couchbase.com\/cloud\/clusters\/cloud-snapshots.html\">entire clusters<\/a> on a schedule.<\/li>\n<\/ul>\n<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/home\/mobile.html\">Couchbase Sync Gateway<\/a> or <a href=\"https:\/\/docs.couchbase.com\/cloud\/app-services\/index.html\">Capella App Services<\/a> allows you to sync data to\/from Couchbase Mobile, including Couchbase Lite and Couchbase Edge Server.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Cut over &amp; decommission MongoDB<\/h3>\n<p>The last step of the migration is to switch your application in production over to Couchbase.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li aria-level=\"1\">Make sure the <b>new system is fully functional<\/b>. If your application has a suite of integration tests or functional tests, this will help you to confirm that everything is working correctly.<\/li>\n<li aria-level=\"1\">Deploy the application that has been converted to <b>use Couchbase instead of MongoDB<\/b>. You may want to consider using <b>feature flags<\/b> to manage the initial switchover, which also allows you to quickly switch back if anything goes wrong.<\/li>\n<li aria-level=\"1\">You may want to keep MongoDB around for a while, just in case. You can change the users to only <i>read <\/i>permission for a while before shutting it down completely.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Migrating from MongoDB Realm to Couchbase Mobile<\/h3>\n<p>For those seeking additional guidance in moving a mobile application, see <a href=\"https:\/\/www.couchbase.com\/blog\/migrate-mongodb-atlas-to-couchbase\/\">this blog post<\/a> with more specifics and tips.<\/p>\n<hr \/>\n<h2>Conclusion<\/h2>\n<p>Migrating from MongoDB to Couchbase may seem like a big undertaking, but with the right strategy, tools, and understanding of the differences, it can unlock significant performance, scalability, and flexibility gains for your applications. Whether you&#8217;re looking for real-time analytics, enterprise-grade mobile sync, or a more powerful query language, Couchbase delivers a modern database platform that goes beyond what MongoDB offers.<\/p>\n<p>By planning your migration carefully\u2014whether it&#8217;s a direct transfer or an incremental sync\u2014you can minimize downtime and future-proof your architecture. And once you&#8217;re up and running, you\u2019ll be ready to take advantage of Couchbase&#8217;s full ecosystem, from edge computing to AI-driven experiences. Ready to make the switch? <a href=\"https:\/\/www.couchbase.com\/developers\/community\/\">We\u2019re here to help<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So you are considering moving from MongoDB to Couchbase. We think that is a great idea, but we get it, you want to know how much work it will be and is it worth it. The answer for both is, [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":17026,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2242,2225,1816,1812],"tags":[9337,10001,1766,1458,1309],"ppma_author":[8937,9311],"class_list":["post-17018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-connectors","category-cloud","category-couchbase-server","category-n1ql-query","tag-application-development","tag-cbmigrate","tag-data-migration","tag-migration","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>MongoDB to Couchbase - Migrations Tips - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion &amp; post-migration tuning.\" \/>\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\/mongodb-to-couchbase-migration-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB to Couchbase - Migrations Tips\" \/>\n<meta property=\"og:description\" content=\"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion &amp; post-migration tuning.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-09T20:12:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-22T15:31:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matthew Groves, Tim Rottach, Director of Product Line Marketing\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"MongoDB to Couchbase &#8211; Migrations Tips\",\"datePublished\":\"2025-04-09T20:12:03+00:00\",\"dateModified\":\"2025-04-22T15:31:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\"},\"wordCount\":1746,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png\",\"keywords\":[\"application development\",\"cbmigrate\",\"Data Migration\",\"migration\",\"mongodb\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Connectors\",\"Couchbase Capella\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\",\"name\":\"MongoDB to Couchbase - Migrations Tips - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png\",\"datePublished\":\"2025-04-09T20:12:03+00:00\",\"dateModified\":\"2025-04-22T15:31:29+00:00\",\"description\":\"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion & post-migration tuning.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MongoDB to Couchbase &#8211; Migrations Tips\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB to Couchbase - Migrations Tips - The Couchbase Blog","description":"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion & post-migration tuning.","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\/mongodb-to-couchbase-migration-guide\/","og_locale":"en_US","og_type":"article","og_title":"MongoDB to Couchbase - Migrations Tips","og_description":"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion & post-migration tuning.","og_url":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-04-09T20:12:03+00:00","article_modified_time":"2025-04-22T15:31:29+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png","type":"image\/png"}],"author":"Matthew Groves, Tim Rottach, Director of Product Line Marketing","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"MongoDB to Couchbase &#8211; Migrations Tips","datePublished":"2025-04-09T20:12:03+00:00","dateModified":"2025-04-22T15:31:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/"},"wordCount":1746,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png","keywords":["application development","cbmigrate","Data Migration","migration","mongodb"],"articleSection":["Best Practices and Tutorials","Connectors","Couchbase Capella","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/","url":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/","name":"MongoDB to Couchbase - Migrations Tips - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png","datePublished":"2025-04-09T20:12:03+00:00","dateModified":"2025-04-22T15:31:29+00:00","description":"Moving from MongoDB to Couchbase? This guide covers everything you need to know\u2014 benefits, migration strategies, query conversion & post-migration tuning.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-mongodb-migration-tips.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/mongodb-to-couchbase-migration-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MongoDB to Couchbase &#8211; Migrations Tips"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."},{"term_id":9311,"user_id":77912,"is_guest":0,"slug":"timothy-rottach","display_name":"Tim Rottach, Director of Product Line Marketing","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/timothy-rottach-couchbase.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/timothy-rottach-couchbase.jpeg"},"author_category":"","last_name":"Rottach","first_name":"Timothy","job_title":"","user_url":"","description":"Tim Rottach is Director of Product Line Marketing at Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=17018"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17018\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/17026"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=17018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=17018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=17018"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=17018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}