Cette page décrit les différences de comportement entre Cloud Firestore et MongoDB.
Pour obtenir la liste des fonctionnalités compatibles en fonction de la version de MongoDB, consultez :
- Fonctionnalités compatibles : 8.0
- Fonctionnalités compatibles : 7.0
- Fonctionnalités compatibles : 6.0
- Fonctionnalités compatibles : 5.0
Connexions et bases de données
- Chaque connexion est limitée à une seule base de données Cloud Firestore.
- 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 du document est de 16 Mio.
- La profondeur d'imbrication maximale des champs est de 20. Chaque champ de type Array et Object ajoute un niveau à la profondeur globale.
- Dans les événements Eventarc, les documents de plus de 10 Mio ne sont pas inclus dans la charge utile de l'événement.
Champ _id
- Le champ
_idde niveau supérieur doit être un ObjectId, une chaîne, un entier 64 bits, un entier 32 bits, un Double, un Binary ou un Object. Les autres types BSON ne sont pas acceptés.
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 prises en charge.
Double
- Les valeurs
NaNsont 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 dans l'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
$mergeet$outne sont pas acceptées. Pour obtenir la liste complète des étapes et des opérateurs compatibles, consultez la section Commandes. - L'étape
$facetn'est pas compatible avec$randni$sampledans les étapes d'entrée, car il s'agit d'une expression volatile.
É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
updateoufindAndModify. - 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 être réessayées 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é.
Préoccupation lue
Cloud Firestore est compatible avec les niveaux de cohérence de lecture
snapshot,majorityetlinearizable. La valeur par défaut estsnapshot, qui fait référence à l'isolation d'instantané.Utilisez
linearizablelorsque l'application nécessite une cohérence stricte et doit empêcher les anomalies de biais d'écriture. Pour les autres charges de travail,snapshotpeut améliorer les performances et réduire la contention des transactions.
Écrire les données de préoccupation
- Seuls les niveaux de confirmation d'écriture
w: 'majority'etw: 1sont acceptés.
Préférence de lecture
- Seuls les niveaux de cohérence de lecture
primary,primaryPreferred,primary_preferred,secondary_preferredetnearestsont acceptés.
Index
- Les index avec caractères génériques ne sont pas acceptés.
- Cloud Firestore ne crée pas automatiquement d'index sur
_id, mais garantit que les valeurs de_idsont uniques dans une collection. Pour obtenir un comportement de tri similaire, vous devez créer explicitement un index ordonné sur le champ_id. Toutefois, soyez attentif aux éventuels problèmes de points chauds, en particulier si vos valeurs_idaugmentent ou diminuent de manière monotone (par exemple, les codes temporels), car cela peut avoir un impact sur les performances à grande échelle. - 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 les multiclés 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 Cloud Firestore et MongoDB.
Commandes
Les différences de comportement suivantes s'appliquent à des commandes spécifiques.
- Les commandes qui ne figurent pas dans les tableaux suivants ne sont pas prises en charge.
commentest accepté par la plupart des commandes, mais est ignoré.maxTimeMSest accepté par la plupart des commandes, mais peut être ignoré.
Requêtes
et écrit
| Commande | Champs non acceptés |
|---|---|
|
|
|
|
|
|
|
|
(aucun) |
|
|
Dans une déclaration de mise à jour :
|
|
|
Dans une instruction de suppression :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(aucun) |
|
|
(aucun) |
Transactions
et les sessions.
| Commande | Champs non acceptés |
|---|---|
|
|
(aucun) |
|
|
(aucun) |
|
|
(aucun) |
Administration
| Commande | Champs non acceptés | Remarques |
|---|---|---|
|
|
|
filter doit être vide s'il est fourni. |
|
|
(aucun) |
Si authorizedCollections est fourni, il doit être défini sur "false". |
|
|
(aucun) |
|
|
|
(aucun) |
|
|
|
(aucun) |
|
|
|
|
Cette commande est une opération sans effet.capped doit être défini sur "false" s'il est fourni.
|
|
|
(aucun) |
Limites de suppression des collections
Les limites suivantes s'appliquent lorsque vous supprimez une collection :
- Recréation d'index : vous ne pouvez pas créer la même configuration d'index immédiatement après une suppression. Vous devez attendre la fin de la suppression en arrière-plan.
- Limite de taille : la suppression de collections volumineuses peut entraîner des délais avant expiration de la connexion. Augmentez le délai de connexion si vous constatez des délais avant expiration. Vous pouvez utiliser la suppression groupée comme alternative.
- Événements : les événements de collecte de dépôt ne sont pas générés pour Eventarc lorsque la commande
dropest utilisée.
Étape suivante
- Exécutez le guide de démarrage rapide : créer une base de données et s'y connecter.
- Pour obtenir la liste complète des fonctionnalités compatibles, consultez Types de données, pilotes et fonctionnalités MongoDB compatibles.