Chaque connexion est limitée à une seule base de données Firestore compatible avec MongoDB.
Vous devez créer une base de données avant de vous y connecter.
Dénomination
Les différences suivantes s'appliquent à la dénomination des parties de votre modèle de données.
Collections
Les noms de collections correspondant à __.*__ ne sont pas acceptés.
Champs
Les noms de champs correspondant à __.*__ ne sont pas acceptés.
Les noms de champs vides ne sont pas acceptés.
Documents
La taille maximale d'un document est de 4 Mio.
La profondeur d'imbrication maximale des champs est de 20. Chaque champ de type Array et Object ajoute un niveau à la profondeur globale.
_id
Le document _id (champ de premier niveau) doit être un ObjectId, une chaîne ou un entier de 64 bits. Les autres types BSON ne sont pas acceptés.
Les chaînes vides ("") et les valeurs 0 64 bits (0L) ne sont pas acceptées.
Valeurs
Les types BSON JavaScript, Symbol, DBPointer et Undefined ne sont pas acceptés.
Date
Les valeurs de date doivent être comprises dans [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].
Decimal128
Les valeurs NaN, l'infini positif et l'infini négatif sont canonisées lors de l'écriture.
Les opérations arithmétiques sur Decimal128 ne sont pas acceptées.
Double
Les valeurs NaN sont canonisées lors de l'écriture.
Expression régulière
Les options d'expression régulière doivent être valides ("i", "m", "s", "u" ou "x") et fournies par ordre alphabétique, sans répétition.
Requêtes
L'ordre de tri naturel (requêtes sans tri explicite) ne correspond pas à l'ordre d'insertion ni à l'ordre croissant de _id.
Agrégations
Les agrégations sont limitées à 250 étapes.
Les étapes $merge et $out ne sont pas acceptées. Consultez la section Commandes pour obtenir la liste complète des étapes et des opérateurs compatibles.
L'étape $lookup se limite à spécifier un foreignField sur _id.
Écritures
Les documents dont le nom commence par un signe dollar ("$") ne peuvent pas être créés à l'aide de la fonctionnalité d'insertion/mise à jour de update ou findAndModify.
Assurez-vous que votre chaîne de connexion inclut retryWrites=false (ou utilisez la méthode appropriée à votre pilote) pour vous assurer que le pilote ne tente pas d'utiliser cette fonctionnalité.
Les écritures pouvant faire l'objet d'une nouvelle tentative ne sont pas acceptées.
Transactions
L'isolation d'instantané et les transactions sérialisables sont acceptées.
Par défaut, les transactions utilisent des contrôles de simultanéité optimistes avec isolation d'instantané.
Lire les préoccupations
Firestore compatible avec MongoDB prend en charge les niveaux de cohérence de lecture snapshot, majority et linearizable. La valeur par défaut est snapshot, qui fait référence à l'isolation des instantanés.
Utilisez linearizable lorsque l'application nécessite une cohérence stricte et doit empêcher les anomalies de biais d'écriture. Pour les autres charges de travail, snapshot peut améliorer les performances et réduire la contention des transactions.
Niveau de fiabilité de l'écriture
Seuls les niveaux de fiabilité d'écriture w: 'majority' et w: 1 sont acceptés.
Préférence de lecture
Seuls les niveaux de cohérence en lecture primary, primaryPreferred, primary_preferred, secondary_preferred et nearest sont acceptés.
Index
Les index avec caractères génériques ne sont pas acceptés.
Firestore compatible avec MongoDB ne crée pas automatiquement d'index sur _id, mais il garantit que les valeurs de _id sont uniques dans une collection.
Les index pour lesquels la clé multiple n'est pas activée ne sont pas automatiquement convertis en index à clé multiple en fonction des opérations d'écriture. Vous devez activer la clé multiple lorsque vous créez l'index. Cette option ne peut pas être modifiée.
Erreurs
Les codes et messages d'erreur peuvent différer entre Firestore compatible avec MongoDB et MongoDB.
Commandes
Les différences de comportement suivantes s'appliquent à des commandes spécifiques.
Les commandes qui ne figurent pas dans les tableaux ci-dessous ne sont pas compatibles.
maxTimeMS est accepté par la plupart des commandes, mais peut être ignoré.
Requêtes et écritures
Commande
Champs non acceptés
find
comment
readConcern
max
min
returnKey
showRecordId
tailable
oplogReplay
noCursorTimeout
awaitData
allowPartialResults
collation
allowDiskUsage
let
aggregate
bypassDocumentValidation
readConcern
collation
hint
comment
let
insert
bypassDocumentValidation
comment
update
collation
arrayFilters
hint
delete
comment
write
Dans une instruction DELETE :
collation
hint
findAndModify
fields
bypassDocumentValidation
collation
arrayFilters
hint
comment
let
count
hint
readConcern
collation
comment
distinct
readConcern
collation
comment
hint
getMore
comment
killCursors
(aucun)
Transactions et sessions
Commande
Champs non acceptés
commitTransaction
comment
abortTransaction
comment
endSessions
(aucun)
Administration
Commande
Champs non acceptés
Remarques
listDatabases
authorizedDatabases
comment
filter doit être vide s'il est fourni.
listCollections
comment
Si authorizedCollections est fourni, il doit être défini sur "false".
listIndexes
comment
createCollection
timeseries
expireAfterSeconds
clusteredIndex
changeStreamPreAndPostImages
size
max
storageEngine
validator
validationLevel
validationAction
indexOptionDefaults
viewOn
pipeline
collation
writeConcern
encryptedFields
comment
Cette commande est une opération sans effet.
capped doit être défini sur "false" s'il est fourni.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[],[],null,["# Behavior differences\n====================\n\nThis page describes behavioral differences between Firestore with MongoDB compatibility and MongoDB.\n\nFor a breakdown of supported features depending on MongoDB version, see:\n\n- [Supported features: 8.0](/firestore/mongodb-compatibility/docs/supported-features-80)\n- [Supported features: 7.0](/firestore/mongodb-compatibility/docs/supported-features-70)\n- [Supported features: 6.0](/firestore/mongodb-compatibility/docs/supported-features-60)\n- [Supported features: 5.0](/firestore/mongodb-compatibility/docs/supported-features-50)\n\nConnections and databases\n-------------------------\n\n- Each connection is limited to a single Firestore with MongoDB compatibility database.\n- A database must be created before connecting to it.\n\nNaming\n------\n\nThe following differences apply to naming parts of your data model.\n\n### Collections\n\n- Collection names matching `__.*__` are not supported.\n\n### Fields\n\n- Field names matching `__.*__` are not supported.\n- Empty field names are not supported.\n\nDocuments\n---------\n\n- The maximum document size is 4 MiB.\n- The maximum nesting depth of fields is 20. Each Array and Object-typed field adds one level to the overall depth.\n\n### `_id`\n\n- Document `_id` (top-level field) must be an ObjectId, String, or 64-bit integer. Other BSON types are not supported.\n- Empty string (\"\") and 64-bit 0 (0L) are not supported.\n\nValues\n------\n\n- The JavaScript, Symbol, DBPointer, and Undefined BSON types are not supported.\n\n### Date\n\n- Date values must fall in `[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]`.\n\n### Decimal128\n\n- `NaN`, positive infinity, and negative infinity values are canonicalized on write.\n- Arithmetic operations on Decimal128 are not supported.\n\n### Double\n\n- `NaN` values are canonicalized on write.\n\n### Regular expression\n\n- Regular expression options must be valid (\"i\", \"m\", \"s\", \"u\", or \"x\") and provided in alphabetical order without repeats.\n\nQueries\n-------\n\n- Natural sort order (queries without an explicit sort) does not match insertion order or order by `_id` ascending.\n\nAggregations\n------------\n\n- Aggregations are limited to 250 stages.\n- The `$merge` and `$out` stages are not supported. See the [commands](#commands) section for a complete list of supported stages and operators.\n- The `$lookup` stage is limited to specifying a `foreignField` on `_id`.\n\nWrites\n------\n\n- Documents with names beginning with a dollar sign (\"$\") cannot be created using the upsert feature of `update` or `findAndModify`.\n- 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.\n\nTransactions\n------------\n\n- Snapshot isolation and serializable transactions are\n supported.\n\n- By default, transactions use optimistic concurrency controls\n with snapshot isolation.\n\nRead concern\n------------\n\n- Firestore with MongoDB compatibility supports the `snapshot` , `majority`, and `linearizable`\n read concerns. The default is `snapshot` which refers to snapshot isolation.\n\n Use `linearizable` when the application requires strict consistency\n and must prevent write skew anomalies. For other workloads,\n `snapshot` can improve performance and reduce transaction contention.\n\nWrite concern\n-------------\n\n- Only `w: 'majority'` and `w: 1` write concerns are supported.\n\nRead preference\n---------------\n\n- Only the `primary`, `primaryPreferred`, `primary_preferred`, `secondary_preferred`, and `nearest` read concerns are supported.\n\nIndexes\n-------\n\n- Wildcard indexes are not supported.\n- Firestore with MongoDB compatibility does not automatically create an index on `_id`, but it ensures values of `_id` are unique within a collection.\n- Indexes without multi-key enabled are not automatically changed to [multi-key indexes](/firestore/mongodb-compatibility/docs/index-overview#multi-key_indexes_for_array_values) based on write operations. You must enable multi-key when you create the index and the option cannot be changed.\n\nErrors\n------\n\n- Error codes and messages may differ between Firestore with MongoDB compatibility and MongoDB.\n\nCommands\n--------\n\nThe following behavior differences apply to specific commands.\n\n- Commands not listed in the following tables are unsupported.\n- `maxTimeMS` is accepted by most commands but may be ignored.\n\n### Queries and writes\n\n### Transactions and sessions\n\n### Administration\n\nWhat's next\n-----------\n\n- Run the [Quickstart: Create a database and connect to it](/firestore/mongodb-compatibility/docs/create-and-query-database).\n- For a full list of supported features, see [Supported MongoDB data types, drivers, and features](/firestore/mongodb-compatibility/docs/supported-data-types-drivers)."]]