MongoDB to Snowflake: How to Move Your Data
Replicate MongoDB to Snowflake with Airbyte. The schema enforcement decision, oplog CDC and replica set requirements, and the FLOAT versus NUMBER choice.

Replicating MongoDB to Snowflake moves collections of JSON-like documents into a columnar warehouse where analysts can query them with SQL. Airbyte's certified MongoDB connector handles the extraction, and unlike many document-store sources it offers proper change data capture. Two choices decide what the result looks like: whether you enforce a schema on the way out, and which Snowflake type your numbers land in.
Both are set before the first sync, and both are awkward to change afterwards, so they are worth a few minutes now.
Should you enforce a schema?
This is the decision that shapes everything downstream. The MongoDB source has a schema enforced option, and the two settings produce very different tables.
With enforcement on, the connector samples the collection to determine a set of fields, and an administrator can then deselect specific fields from the Replication screen to filter them out of the sync. You get typed columns in Snowflake and something an analyst can query immediately.
With enforcement off, collections are read in schema-less mode, which does not assume documents share the same structure. Each document generates a record containing only a small set of top-level fields, with the contents of the data field varying according to each document. That is far more flexible for genuinely unstructured collections, and it pushes all the parsing work into Snowflake.
The right answer follows from your collection rather than your preference. If documents share a stable shape, enforce the schema and get real columns. If the collection is genuinely polymorphic, enforcement will sample its way to a schema that misrepresents the tail of your data, and schema-less mode with a downstream model is the honest choice.
What does CDC require?
The connector reads MongoDB's oplog for incremental syncs, which means your deployment must be a replica set or an Atlas cluster. A standalone MongoDB instance has no oplog and is not supported.
A handful of other workloads sit outside what this connector replicates: clusters running versions below 4.4, system collections including the oplog itself, and views along with capped and clustered collections. Collections with very dynamic schemas are also called out as a limitation, which reinforces the schema decision above.
Create a dedicated read-only user rather than reusing an application account, granting a read role across the databases you intend to replicate. If you are on Atlas, TLS is expected and should be enabled on the connector.
The oplog is a capped collection, which introduces the same class of operational risk as a Postgres replication slot but with the opposite failure mode. Rather than growing until disk fills, the oplog rolls over. If a connection is paused long enough for the oplog to wrap past the connector's saved position, the sync cannot resume incrementally and needs a fresh snapshot. Monitor for failing or paused connections, and size your oplog with your sync interval in mind.
Set the decimal type before your first sync
The Snowflake destination has a Decimal Data Type setting governing which type is used for columns Airbyte treats as numbers. The options are FLOAT and NUMBER(38,9), and FLOAT is the default.
FLOAT is approximate binary floating point. NUMBER(38,9) is exact fixed-point, and it is what Airbyte's documentation recommends. MongoDB's Decimal128 type exists precisely so applications can store exact decimal values such as currency, so passing those through a floating point conversion undoes the reason someone chose it in the first place.
Change this before the first sync. Afterwards, Snowflake converts the column in place, values with more than 29 integer digits are nulled without a metadata entry recording it, and precision lost in the original FLOAT load cannot be recovered by anything short of a full refresh.
For the rest of the Snowflake setup, create dedicated entities rather than reusing existing ones: a role, user, warehouse, database, and schema, with the role holding OWNERSHIP on the database. Use an X-Small warehouse with a sixty-second auto-suspend dedicated to syncs, since Snowflake bills per second and resumes the warehouse on every load.
Frequently asked questions
Can I sync from a standalone MongoDB instance?
No. CDC reads the oplog, so a replica set or an Atlas cluster is required. Standalone deployments are unsupported.
Should I turn schema enforcement off?
Only if your documents genuinely vary in structure. Enforcement gives typed columns; schema-less mode gives a small set of top-level fields with a varying data payload you parse downstream.
Why are my decimal values slightly off?
The Decimal Data Type setting defaults to FLOAT, which is approximate. Switch to NUMBER(38,9) and run a full refresh, since in-place conversion cannot restore precision that was never stored.
My sync needs a full resync after being paused.
The oplog is capped and rolls over. If it wrapped past the connector's saved position while the connection was paused or failing, incremental resumption is no longer possible and a new snapshot is needed.
Get your MongoDB data into Snowflake
Decide on schema enforcement per collection, confirm you are on a replica set, set the decimal type before loading, and watch for paused connections against a capped oplog. For the same source into other destinations, see our guides to MongoDB to PostgreSQL and MongoDB to BigQuery.
Integrate with 600+ apps using Airbyte
Move data from 600+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.
