Relevant to Cloud Firestore Enterprise edition only. |
This page describes behavioral differences between Cloud Firestore with MongoDB compatibility and MongoDB.
For a breakdown of supported features depending on MongoDB version, see:
Connections and databases
- Each connection is limited to a single Cloud Firestore with MongoDB compatibility database.
- A database must be created before connecting to it.
Naming
The following differences apply to naming parts of your data model.
Collections
- Collection names matching
__.*__
are not supported.
Fields
- Field names matching
__.*__
are not supported. - Empty field names are not supported.
Documents
- The maximum document size is 4 MiB.
- The maximum nesting depth of fields is 20. Each Array and Object-typed field adds one level to the overall depth.
_id
- Document
_id
(top-level field) must be an ObjectId, String, or 64-bit integer. Other BSON types are not supported. - Empty string ("") and 64-bit 0 (0L) are not supported.
Values
- The JavaScript, Symbol, DBPointer, and Undefined BSON types are not supported.
Date
- Date values must fall in
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
.
Decimal128
NaN
, positive infinity, and negative infinity values are canonicalized on write.- Arithmetic operations on Decimal128 are not supported.
Double
NaN
values are canonicalized on write.
Regular expression
- Regular expression options must be valid ("i", "m", "s", "u", or "x") and provided in alphabetical order without repeats.
Queries
- Natural sort order (queries without an explicit sort) does not match
insertion order or order by
_id
ascending.
Aggregations
- Aggregations are limited to 250 stages.
- The
$merge
and$out
stages are not supported. See the commands section for a complete list of supported stages and operators. - The
$lookup
stage is limited to specifying aforeignField
on_id
.
Writes
- Documents with names beginning with a dollar sign ("$") cannot be
created using the upsert feature of
update
orfindAndModify
. - Make sure your connection string
includes
retryWrites=false
(or use the method appropriate to your driver) to make sure the driver does not attempt to use this feature. Retryable writes are not supported.
Transactions
Snapshot isolation and serializable transactions are supported.
By default, transactions use optimistic concurrency controls with snapshot isolation.
Read concern
Cloud Firestore with MongoDB compatibility supports the
snapshot
,majority
, andlinearizable
read concerns. The default issnapshot
which refers to snapshot isolation.Use
linearizable
when the application requires strict consistency and must prevent write skew anomalies. For other workloads,snapshot
can improve performance and reduce transaction contention.
Write concern
- Only
w: 'majority'
andw: 1
write concerns are supported.
Read preference
- Only the
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
, andnearest
read concerns are supported.
Indexes
- Wildcard indexes are not supported.
- Cloud Firestore with MongoDB compatibility does not automatically create an
index on
_id
, but it ensures values of_id
are unique within a collection. - Indexes without multi-key enabled are not automatically changed to multi-key indexes based on write operations. You must enable multi-key when you create the index and the option cannot be changed.
Errors
- Error codes and messages may differ between Cloud Firestore with MongoDB compatibility and MongoDB.
Commands
The following behavior differences apply to specific commands.
- Commands not listed in the following tables are unsupported.
maxTimeMS
is accepted by most commands but may be ignored.
Queries and writes
Command | Unsupported Fields |
---|---|
|
|
|
|
|
|
|
|
|
Within a delete statement:
|
|
|
|
|
|
|
|
|
|
(none) |
Transactions and sessions
Command | Unsupported Fields |
---|---|
|
|
|
|
|
(none) |
Administration
Command | Unsupported Fields | Notes |
---|---|---|
|
|
filter must be empty if provided. |
|
|
authorizedCollections must be false if provided. |
|
|
|
|
|
This command is a no-op.capped must be false if provided. |
What's next
- Run the Quickstart: Create a database and connect to it.
- For a full list of supported features, see Supported MongoDB data types, drivers, and features.