Maison base de données tutoriel mysql Introduction aux opérations de requête courantes dans MongoDB (avec code)

Introduction aux opérations de requête courantes dans MongoDB (avec code)

Mar 23, 2019 pm 04:39 PM
mongodb

Cet article vous présente une introduction aux opérations de requête courantes dans MongoDB (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Avant-propos : L'outil de visualisation utilisé est Studio 3T, site officiel-->https://studio3t.com/
Numéro de version : MongoDB shell version v3.4.2
Comment utiliser : https :/ /blog.csdn.net/weixin_...
Ce qu'il faut surveiller : focus sur les opérateurs.
Comment rechercher : appuyez sur ctrl+F sur cette page et entrez les mots-clés à rechercher

1. Requête couramment utilisée
Pour faciliter l'utilisation, supprimez tous les documents avant de les insérer. les données originales (Veuillez opérer avec prudence dans le projet !) :

db.getCollection("inventory").deleteMany({})
Copier après la connexion

Voir tous les documents

db.getCollection("inventory").find({})
Copier après la connexion

1. Recherche d'objet
1.1, données originales

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Copier après la connexion
Copier après la connexion

1.2, recherche de documents avec size.h égal à 14, size.w égal à 21, size.uom égal à cm

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
Copier après la connexion

1.3. Rechercher des documents où size.uom est égal à dans

db.inventory.find( { "size.uom": "in" } )
Copier après la connexion

Remarque : lorsque vous recherchez un seul attribut d'objet, veillez à ajouter des guillemets. !

1.4. Rechercher et renvoyer les champs spécifiés dans l'objet

db.inventory.find(
   { status: "A" },
   { item: 1, status: 1, "size.uom": 1 }
)
Copier après la connexion

1.5. Rechercher et filtrer les champs spécifiés dans l'objet

db.inventory.find(
   { status: "A" },
   { "size.uom": 0 }
)
Copier après la connexion

<.> 2. Recherche de tableau 2.1. Données originales

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
2.2. Recherche de documents avec des balises=["red", "blank"]

db.inventory.find( { tags: ["red", "blank"] } )
Copier après la connexion

Remarque : il ne s'agit pas d'une relation d'inclusion, c'est-à-dire que les balises : ["red", "blank", "plain"] ne sont pas incluses

Rechercher des documents avec des balises contenant. rouge

db.inventory.find( { tags: "red" } )
Copier après la connexion

Remarque : vous ne pouvez pas écrire db.inventory.find( { tags: ["red"] } ) comme ceci, ce qui signifie rechercher des documents dont les balises sont rouges

3. Rechercher des objets contenus dans le tableau3.1. Données originales

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion
3.2. non inclus), tant qu'il y a un objet dans le tableau Si les conditions sont remplies, l'ensemble du tableau

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
Copier après la connexion

doit être strictement suivi dans l'ordre des champs Si l'ordre des. le champ est modifié, ce sera , comme suit : 找 不 到

db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )
Copier après la connexion
3.3 , Trouver l'objet élément dans le tableau, il y a un objet élément avec qty=5, ou l'objet (ou autre objet élément) Warehouse=A

db.inventory.find( { "instock.qty": 5, "instock.warehouse": "A" } )
Copier après la connexion
3.4, recherchez l'objet dans le tableau et renvoyez un certain attribut de l'objet

db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
Copier après la connexion

4. recherche4.1. Données originales

db.inventory.insertMany( [
  { item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
  { item: "notebook", status: "A",  size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
  { item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
  { item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Copier après la connexion
4.2. Interroger et renvoyer le champ spécifié

Sous la condition status=A, renvoyer les champs _id, item, status

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
Copier après la connexion
Résultat :

{ "_id" : ObjectId("5c91cd53e98d5972748780e1"), 
    "item" : "journal", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e2"), 
    "item" : "notebook", 
    "status" : "A"}
// ----------------------------------------------
{ "_id" : ObjectId("5c91cd53e98d5972748780e5"), 
    "item" : "postcard", 
    "status" : "A"}
Copier après la connexion
4.3 On peut voir à partir de la version 4.2 que _id est automatiquement apporté, vous pouvez donc supprimer, comme suit


Requête sans (supprimer) l'identifiant :

db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
Copier après la connexion

Remarque : En plus de l'identifiant, d'autres champs peuvent être conservés lors du filtrage, les autres champs ne peuvent pas être 0 en écrivant également 1 Par exemple :

db.inventory.find( { status: "A" }, { item: 1, status: 0 } )
Copier après la connexion

signalera une erreur

Introduction aux opérations de requête courantes dans MongoDB (avec code)

4.4 Exclure des champs spécifiques et renvoyer d'autres champs

db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
Copier après la connexion

5. Rechercher des clés nulles ou inexistantes5.1. Données originales

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
Copier après la connexion
Copier après la connexion
5.2. Rechercher des documents dont l'élément est nul, ou des documents qui ne contiennent pas d'élément

db.inventory.find( { item: null } )
Copier après la connexion

2. Opérateurs
1. $lt moins de Données originales

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Copier après la connexion
Copier après la connexion
1.2. Recherchez des collections de documents avec "size.h" inférieur à 15

db.inventory.find( { "size.h": { $lt: 15 } } )
Copier après la connexion
1.3 Utilisez $lt avec AND

pour trouver que size.h est inférieur à 15 et que size.uom est dans. , et le statut est le document de D

db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
Copier après la connexion

2 $lte inférieur à égal inférieur ou égal à Données originales

2.2. Recherchez les documents avec instock.qty inférieur ou égal à 20. Tant qu'un objet du tableau remplit les conditions, renvoie l'ensemble du tableau
db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion

db.inventory.find( { 'instock.qty': { $lte: 20 } } )
Copier après la connexion
3. supérieur à

3.1, données originales

3.2, rechercher des documents avec dim_cm supérieur à 25
db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

db.inventory.find( { dim_cm: { $gt: 25 } } )
Copier après la connexion
Remarque : tant qu'il contient des éléments supérieurs à 25 Les tableaux sont tous qualifiés

3.3. Rechercher les documents dont dim_cm est supérieur à 15, ou inférieur à 20, ou les deux supérieurs à 15 et inférieurs à 20

3.4. Trouver dim_cm Les documents qui sont à la fois supérieurs à 22 et inférieurs à 30 (il s'agit de juger si un certain élément du tableau est supérieur à 22 et inférieur à 30, plutôt que de juger tous les éléments du tableau)
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
Copier après la connexion

3.5. Recherche basée sur la position du tableau
db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
Copier après la connexion
Trouvez le

deuxième
document de dim_cm supérieur à 25

db.inventory.find( { "dim_cm.1": { $gt: 25 } } )
Copier après la connexion
4. la longueur du tableau

Rechercher les balises Document de longueur 3

db.inventory.find( { "tags": { $size: 3 } } )
Copier après la connexion
5 est supérieure ou égale à

5.1. Données originales
5.2. Tableau de recherche Une collection de documents dont le premier élément (objet) a une quantité supérieure ou égale à 20

db.inventory.insertMany( [
   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
   { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
   { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion

6 . Attribut d'objet $elemMatch correspondant à
db.inventory.find( { 'instock.0.qty': { $gte: 20 } } )
Copier après la connexion

6.1 Recherchez la quantité dans le tableau =5, l'objet Warehouse="A" et renvoie la collection de documents
6.2. dans le tableau qui correspond à une quantité supérieure à 10

et
db.inventory.find( { "instock": { $elemMatch: { qty: 5, warehouse: "A" } } } )
Copier après la connexion
inférieure ou égale à 20

db.inventory.find( { "instock": { $elemMatch: { qty: { $gt: 10, $lte: 20 } } } } )
Copier après la connexion

如果不使用 $elemMatch 的话,就表示 qty 大于 10 或者小于等于 20,官方文档意思是,不在数组的某一个元素找 既满足条件 A 又满足条件 B 的 qty,而是在数组的所有元素上找,满足条件 A 或满足条件 B 的 qty

db.inventory.find( { "instock.qty": { $gt: 10,  $lte: 20 } } )
Copier après la connexion

7、$slice 返回数组特定位置的元素
7.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

7.2、查找并返回 tags 数组的最后一个元素

db.inventory.find( { item: "journal" }, { item: 1, qty: 0, tags: { $slice: -1 } } )
Copier après la connexion

结果:

{ 
    "_id" : ObjectId("5c91dce5e98d5972748780e6"), 
    "item" : "journal", 
    "tags" : [
        "red"
    ]
}
Copier après la connexion

8、$type 返回指定类型的元素
8.1、原数据

db.inventory.insertMany([
   { _id: 1, item: null },
   { _id: 2 }
])
Copier après la connexion
Copier après la connexion

8.2、返回 null 类型的数据

db.inventory.find( { item : { $type: 10 } } )
Copier après la connexion

类型如下:

Introduction aux opérations de requête courantes dans MongoDB (avec code)

详细文档请看:https://docs.mongodb.com/manu...

9、$exists 返回存在/不存在的键
查找不存在 item 键的数据

db.inventory.find( { item : { $exists: false } } )
Copier après la connexion

10、$all 包含
10.1、原数据

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

10.2、查找 tags 数组包含 ["red", "blank"] 的文档

db.inventory.find( { tags: { $all: ["red", "blank"] } } )
Copier après la connexion

综上:
数组用的:$all$size$slice
对象用的:$elemMatch

Query查询的详细文档请看:https://docs.mongodb.com/manu...
Operator的详细文档请看:https://docs.mongodb.com/manu...

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的mongodb视频教程栏目!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

A quoi sert net4.0 A quoi sert net4.0 May 10, 2024 am 01:09 AM

.NET 4.0 est utilisé pour créer une variété d'applications et offre aux développeurs d'applications des fonctionnalités riches, notamment : programmation orientée objet, flexibilité, architecture puissante, intégration du cloud computing, optimisation des performances, bibliothèques étendues, sécurité, évolutivité, accès aux données et mobile. soutien au développement.

Comment configurer l'expansion automatique de MongoDB sur Debian Comment configurer l'expansion automatique de MongoDB sur Debian Apr 02, 2025 am 07:36 AM

Cet article présente comment configurer MongoDB sur Debian System pour réaliser une expansion automatique. Les étapes principales incluent la configuration de l'ensemble de répliques MongoDB et de la surveillance de l'espace disque. 1. Installation de MongoDB Tout d'abord, assurez-vous que MongoDB est installé sur le système Debian. Installez à l'aide de la commande suivante: SudoaptupDaSudoaptInstall-myongoDB-Org 2. Configuration de la réplique MongoDB Ensemble de répliques MongoDB assure la haute disponibilité et la redondance des données, ce qui est la base de la réalisation d'une expansion de capacité automatique. Démarrer le service MongoDB: Sudosystemctlstartmongodsudosys

Comment assurer la haute disponibilité de MongoDB sur Debian Comment assurer la haute disponibilité de MongoDB sur Debian Apr 02, 2025 am 07:21 AM

Cet article décrit comment construire une base de données MongoDB hautement disponible sur un système Debian. Nous explorerons plusieurs façons de garantir que la sécurité des données et les services continueront de fonctionner. Stratégie clé: réplicaset: réplicaset: Utilisez des répliques pour obtenir la redondance des données et le basculement automatique. Lorsqu'un nœud maître échoue, l'ensemble de répliques élise automatiquement un nouveau nœud maître pour assurer la disponibilité continue du service. Sauvegarde et récupération des données: utilisez régulièrement la commande Mongodump pour sauvegarder la base de données et formuler des stratégies de récupération efficaces pour faire face au risque de perte de données. Surveillance et alarmes: déploier les outils de surveillance (tels que Prometheus, Grafana) pour surveiller l'état de course de MongoDB en temps réel, et

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

Quelle est la stratégie de sauvegarde Centos MongoDB? Quelle est la stratégie de sauvegarde Centos MongoDB? Apr 14, 2025 pm 04:51 PM

Explication détaillée de la stratégie de sauvegarde efficace de MongoDB dans le cadre du système CentOS Cet article introduira en détail les différentes stratégies de mise en œuvre de sauvegarde MongoDB sur le système CentOS pour assurer la sécurité des données et la continuité des activités. Nous couvrirons les sauvegardes manuelles, les sauvegardes chronométrées, les sauvegardes de scripts automatisées et les méthodes de sauvegarde dans des environnements de conteneurs Docker, et offrir les meilleures pratiques pour la gestion des fichiers de sauvegarde. Sauvegarde manuelle: utilisez la commande mongodump pour effectuer une sauvegarde complète manuelle, par exemple: mongodump-hlocalhost: 27017-u username-p mot de passe-d database name-o / backup Directory Cette commande exportera les données et les métadonnées de la base de données spécifiée vers le répertoire de sauvegarde spécifié.

Comment chiffrer les données dans Debian MongoDB Comment chiffrer les données dans Debian MongoDB Apr 12, 2025 pm 08:03 PM

Le chiffrement de la base de données MongoDB sur un système Debian nécessite de suivre les étapes suivantes: Étape 1: Installez d'abord MongoDB, assurez-vous que votre système Debian a installé MongoDB. Sinon, veuillez vous référer au document officiel MongoDB pour l'installation: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/step 2: générer le fichier de clé de cryptage Créer un fichier contenant la clé de chiffrement et définir les permissions correctes: ddif = / dev / urandof = / etc / mongodb-keyfilebs = 512

Mise à jour majeure de Pi Coin: PI Bank arrive! Mise à jour majeure de Pi Coin: PI Bank arrive! Mar 03, 2025 pm 06:18 PM

Pinetwork est sur le point de lancer Pibank, une plate-forme bancaire mobile révolutionnaire! Pinetwork a publié aujourd'hui une mise à jour majeure sur Elmahrosa (face) Pimisrbank, appelée Pibank, qui intègre parfaitement les services bancaires traditionnels avec des fonctions de crypto-monnaie de pignon (prend en charge l'échange entre les Fiat Currency tels que le Dollar, l'Euro, Usdt, Usdc, Ripiah avec des crypto-monnaies. Quel est le charme de Pibank? Découvrons! Les principales fonctions de Pibank: gestion unique des comptes bancaires et des actifs de crypto-monnaie. Soutenez les transactions en temps réel et adoptez les biospécies

MongoDB et base de données relationnelle: une comparaison complète MongoDB et base de données relationnelle: une comparaison complète Apr 08, 2025 pm 06:30 PM

MongoDB et base de données relationnelle: comparaison approfondie Cet article explorera en profondeur les différences entre la base de données NOSQL MongoDB et les bases de données relationnelles traditionnelles (telles que MySQL et SQLServer). Les bases de données relationnelles utilisent des structures de table des lignes et des colonnes pour organiser les données, tandis que MongoDB utilise des modèles flexibles axés sur les documents pour mieux répondre aux besoins des applications modernes. Différencie principalement les structures de données: les bases de données relationnelles utilisent des tables de schéma prédéfinies pour stocker les données, et les relations entre les tableaux sont établies par des clés primaires et des clés étrangères; MongoDB utilise des documents BSON de type JSON pour les stocker dans une collection, et chaque structure de document peut être modifiée indépendamment pour obtenir une conception sans motif. Conception architecturale: les bases de données relationnelles doivent être prédéfinies schéma fixe; MongoDB support

See all articles