Node.js Se connecter à MongoDB

MongoDB est un système de gestion de base de données orienté document, écrit en C++.

Dans ce chapitre, nous allons présenter comment utiliser Node.js pour se connecter à MongoDB et effectuer des opérations sur la base de données.

Si vous n'avez pas encore de connaissances de base sur MongoDB, vous pouvez vous référer à notre tutoriel :Tutoriel MongoDB。

Installer le pilote

Ce tutoriel utilise lacommande cnpm personnalisée de Taobaopour installer :

$ cnpm install mongodb

Après une installation réussie, nous pouvons utiliser l'objet MongoClient pour nous connecter à la base de données :

Exemple

const { MongoClient } = require('mongodb');

async function main() {
    // URI de connexion MongoDB
    const uri = "mongodb://localhost:27017"; // Si vous utilisez un MongoDB distant, veuillez modifier l'URI en conséquence

    // Créer un nouveau MongoClient
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

    try {
        // Se connecter au serveur MongoDB
        await client.connect();

        console.log("Connecté avec succès au serveur");

     
    } finally {
        // Assurez-vous de fermer la connexion lorsque vous avez terminé
        await client.close();
    }
}

main().catch(console.error);

L'exécution du code ci-dessus produit la sortie suivante :

Connected successfully to server

Description des paramètres de connexion :

  • MongoClient: Ceci est le client MongoDB, utilisé pour se connecter à la base de données.
  • uri: Il s'agit de la chaîne de connexion MongoDB, au formatmongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]。
  • useNewUrlParseretuseUnifiedTopologysont des options utilisées pour éviter certains anciens comportements de connexion.

Ensuite, nous allons implémenter les fonctions de création, lecture, mise à jour et suppression (CRUD).


Créer une base de données

Pour créer une base de données dans MongoDB, nous devons d'abord créer un objet MongoClient, puis configurer l'URL et le numéro de port spécifiés.

Si la base de données n'existe pas, MongoDB créera la base de données et établira la connexion.

Créez une connexion

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Ici, vous pouvez effectuer des opérations sur la base de données, comme créer une collection ou insérer des documents const collection = database.collection('exampleCollection'); const doc = { name: "Example", type: "Test" }; const result = await collection.insertOne(doc); console.log(`Nouveau document créé,IDest : ${result.insertedId}`); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

L'exécution du code ci-dessus produit la sortie suivante :

成功连接到服务器
新文档已创建,ID 为: 6678e18e0bb3f4247be610d8

Créer une collection

Nous pouvons utiliser la méthode createCollection() pour créer une collection :

Créer une collection

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Utilisez la méthode createCollection pour créer une collection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`Collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer un nouveau document const doc = { name: "Exemple", type: "Test" }; //Insérer un document dans la collection const result = await collection.insertOne(doc); console.log(`Nouveau document créé,IDest : ${result.insertedId}`); } finally { //Veillez à fermer la connexion lorsque vous avez terminé await client.close(); } } main().catch(console.error);

L'exécution du code ci-dessus produit la sortie suivante :

成功连接到服务器
集合 exampleCollection 创建成功
新文档已创建,ID 为: 6678e1b5c742b3ebd57f9759

Opérations sur la base de données (CRUD)

Contrairement à MySQL, MongoDB crée automatiquement des bases de données et des collections, donc nous n'avons pas besoin de les créer manuellement avant de les utiliser.

Insertion de données

Dans l'exemple suivant, nous nous connectons à la table exampleCollection dans la base de données example et insérons une donnée, en utilisant insertOne():

Insérer un document

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Utilisez la méthode createCollection pour créer une collection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`Collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer un nouveau document const doc = { name: "Alice", age: 25, address: "Wonderland" }; //Insérer un document dans la collection const result = await collection.insertOne(doc); console.log(`Nouveau document créé,IDest : ${result.insertedId}`); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Exécutez la commande suivante, et le résultat de sortie est :

成功连接到服务器
集合 exampleCollection 创建成功
新文档已创建,ID 为: 6678e1d1f9503dc2e0e2a20b

D'après le résultat de sortie, les données ont été insérées avec succès.

Nous pouvons également ouvrir le client MongoDB pour afficher les données, par exemple :

> show dbs
example  0.000GB          # 创建了 example 数据库

> use example             # 切换到 example 数据库

example> show tables
exampleCollection        # 创建了 exampleCollection 集合(数据表)
                    # 自动创建了 site 集合(数据表)
example> db.exampleCollection.find()
[
  {
    _id: ObjectId('6678e1d1f9503dc2e0e2a20b'),
    name: 'Alice',
    age: 25,
    address: 'Wonderland'
  }
]

Si vous souhaitez insérer plusieurs documents, vous pouvez utiliserinsertMany():

Insérer plusieurs documents

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Utilisez la méthode createCollection pour créer une collection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`Collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}nouveaux documents créés,IDest:`); Object.keys(result.insertedIds).forEach((key, index) => { console.log(`Document ${index + 1}: ${result.insertedIds[key]}`); }); } finally { //Veillez à fermer la connexion lorsque vous avez terminé await client.close(); } } main().catch(console.error);

Le résultat de sortie de l'exécution est :

成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 6678e30e80ac30e5e689f13a
文档 2: 6678e30e80ac30e5e689f13b
文档 3: 6678e30e80ac30e5e689f13c

Interroger les données

Vous pouvez utiliser find() pour rechercher des données. find() peut renvoyer toutes les données correspondant aux conditions. Si aucune condition n'est spécifiée, find() renvoie toutes les données de la collection.

find()

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Utilisez la méthode createCollection pour créer une collection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`Collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}nouveaux documents créés,IDest:`); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`Document ${index + 1}: ${id}`); }); //Interroger tous les documents de la collection const query = {}; //Un objet de requête vide signifie interroger tous les documents const options = { projection: { _id: 0, name: 1, age: 1, address: 1 } }; //Ne sélectionner que les champs requis const cursor = collection.find(query, options); //Afficher tous les documents interrogés const allValues = await cursor.toArray(); console.log("Documents interrogés :"); console.log(allValues); } finally { //Veillez à fermer la connexion lorsque vous avez terminé await client.close(); } } main().catch(console.error);

Le résultat de sortie de l'exécution est :

成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 0
文档 2: 1
文档 3: 2
查询到的文档:
[
  { name: 'Alice', age: 25, address: 'Wonderland' },
  { name: 'Bob', age: 30, address: 'Builderland' },
  { name: 'Charlie', age: 35, address: 'Chocolate Factory' }
]

L'exemple suivant récupère les instances où name est "Alice" :

Interroger des données avec des conditions spécifiées

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Utilisez la méthode createCollection pour créer une collection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`Collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Interroger des documents à l'aide du paramètre name const query = { name: "Alice" }; //Critères de recherche const options = { projection: { _id: 0, name: 1, age: 1, address: 1 } }; //Sélectionner uniquement les champs requis const cursor = collection.find(query, options); //Afficher les documents interrogés const allValues = await cursor.toArray(); console.log("Documents interrogés :"); console.log(allValues); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

La sortie après l'exécution de la commande suivante est :

成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 0
文档 2: 1
文档 3: 2
查询到的文档:
[
  { name: 'Alice', age: 25, address: 'Wonderland' }
]

Mettre à jour les données

Nous pouvons également modifier les données dans la base de données. L'exemple suivant mettra à jour les données où name est 'Alice' :

Mettre à jour un document

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Spécifiez les conditions, mettez à jour les données en fonction du paramètre name const filter = { name: "Alice" }; //Critères de recherche const updateDoc = { $set: { age: 28, address: "New Wonderland" }, }; const updateResult = await collection.updateOne(filter, updateDoc); console.log(`${updateResult.matchedCount}document(s) correspondent aux critères du filtre`); console.log(`${updateResult.modifiedCount}document(s) ont été mis à jour`); //Interroger les documents mis à jour const updatedDocument = await collection.findOne(filter); console.log("Documents mis à jour :"); console.log(updatedDocument); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Après une exécution réussie, la sortie est la suivante :

成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 0
文档 2: 1
文档 3: 2
1 个文档匹配筛选条件
1 个文档已更新
更新后的文档:
{
  _id: new ObjectId('6678e1d1f9503dc2e0e2a20b'),
  name: 'Alice',
  age: 28,
  address: 'New Wonderland'
}

Si vous souhaitez mettre à jour tous les documents qui correspondent aux critères, vous pouvez utiliserupdateMany():

Mettre à jour plusieurs documents

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Alice", age: 28, address: "Ancien Wonderland" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Spécifiez des conditions, mettez à jour plusieurs documents en fonction du paramètre name const filter = { name: "Alice" }; //Critères de recherche const updateDoc = { $set: { address: "Wonderland mis à jour" }, }; const updateResult = await collection.updateMany(filter, updateDoc); console.log(`${updateResult.matchedCount}document(s) correspondent aux critères du filtre`); console.log(`${updateResult.modifiedCount}document(s) ont été mis à jour`); //Interroger les documents mis à jour const updatedDocuments = await collection.find(filter).toArray(); console.log("Documents mis à jour :"); console.log(updatedDocuments); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Supprimer les données

L'exemple suivant supprime les données où name est 'Alice' :

Supprimer un document

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Spécifiez les conditions, supprimez un document en fonction du paramètre name const filter = { name: "Alice" }; //Critères de recherche const deleteResult = await collection.deleteOne(filter); console.log(`${deleteResult.deletedCount}document(s) ont été supprimés`); //Interroger tous les documents de la collection pour confirmer la suppression const remainingDocuments = await collection.find({}).toArray(); console.log("Documents restants :"); console.log(remainingDocuments); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Après une exécution réussie, la sortie est :

成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 0
文档 2: 1
文档 3: 2
1 个文档已删除
剩余的文档:
[
  {
    _id: new ObjectId('6678e18e0bb3f4247be610d8'),
    name: 'Example',
    type: 'Test'
  },
...

Si vous souhaitez supprimer plusieurs documents, vous pouvez utiliser la méthodedeleteMany()method

L'exemple suivant supprime toutes les données où type est 'en' :

Supprimer plusieurs documents

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Alice", age: 28, address: "Old Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Spécifiez les conditions, supprimez plusieurs documents en fonction du paramètre name const filter = { name: "Alice" }; //Critères de recherche const deleteResult = await collection.deleteMany(filter); console.log(`${deleteResult.deletedCount}document(s) ont été supprimés`); //Interrogez tous les documents de la collection pour confirmer la suppression const remainingDocuments = await collection.find({}).toArray(); console.log("Documents restants :"); console.log(remainingDocuments); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Sort

Le tri utilise la méthode sort(), qui accepte un paramètre pour spécifier si l'ordre est croissant (1) ou décroissant (-1).

Par exemple :

{ type: 1 }  // 按 type 字段升序
{ type: -1 } // 按 type 字段降序

Trier par type dans l'ordre croissant :

Tri

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" }, { name: "Dave", age: 20, address: "Dreamland" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Trier les documents à l'aide de la méthode sort() //Trier par le champ age dans l'ordre croissant const sortedDocsAsc = await collection.find().sort({ age: 1 }).toArray(); console.log("Documents triés par le champ age dans l'ordre croissant :"); console.log(sortedDocsAsc); //Trier par le champ age dans l'ordre décroissant const sortedDocsDesc = await collection.find().sort({ age: -1 }).toArray(); console.log("Documents triés par le champ age dans l'ordre décroissant :"); console.log(sortedDocsDesc); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Pagination des requêtes

Si vous souhaitez définir le nombre de documents renvoyés, vous pouvez utiliser la méthodelimit(), qui accepte uniquement un paramètre spécifiant le nombre de documents à renvoyer.

limit() : Lire deux documents

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" }, { name: "Dave", age: 20, address: "Dreamland" }, { name: "Eve", age: 22, address: "Eden" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Utilisez la méthode limit() pour limiter le nombre de résultats de la requête const limitedDocs = await collection.find().limit(3).toArray(); console.log("Limiter les résultats de la requête à 3 documents :"); console.log(limitedDocs); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Si vous souhaitez spécifier le nombre de documents à ignorer, vous pouvez utiliser la méthodeskip().

La méthode skip() est utilisée pour ignorer un nombre spécifié de documents et renvoyer les résultats de la requête des documents restants.

skip() : Ignorer les deux premiers documents et lire deux documents

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('example'); //Créer une collection à l'aide de la méthode createCollection const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`collection ${collectionName}créée avec succès`); //Récupérer la collection const collection = database.collection(collectionName); //Créer plusieurs nouveaux documents const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" }, { name: "Dave", age: 20, address: "Dreamland" }, { name: "Eve", age: 22, address: "Eden" } ]; //Insérer plusieurs documents dans la collection const result = await collection.insertMany(docs); console.log(`${result.insertedCount}de nouveaux documents ont été créés,IDcomme : `); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`document ${index + 1}: ${id}`); }); //Utilisez la méthode skip() pour ignorer les deux premiers documents et renvoyer les documents restants const skippedDocs = await collection.find().skip(2).toArray(); console.log("Résultats de la requête après avoir ignoré les deux premiers documents :"); console.log(skippedDocs); } finally { //Assurez-vous de fermer la connexion une fois terminé await client.close(); } } main().catch(console.error);

Opération de connexion

mongoDB n'est pas une base de données relationnelle, mais nous pouvons utiliser$lookuppour implémenter une jointure gauche.

$lookup est un opérateur de pipeline d'agrégation dans MongoDB utilisé pour effectuer des jointures externes gauches. Il peut être utilisé pour trouver des documents dans une collection qui correspondent aux conditions dans une autre collection et les fusionner ensemble.

Par exemple, nous avons deux collections avec les données suivantes :

Collection 1 : orders

[
  { "_id": 1, "product_id": 101, "quantity": 2 },
  { "_id": 2, "product_id": 102, "quantity": 1 },
  { "_id": 3, "product_id": 103, "quantity": 4 }
]

Collection 2 : products

[
  { "_id": 101, "name": "Product A", "price": 50 },
  { "_id": 102, "name": "Product B", "price": 70 },
  { "_id": 103, "name": "Product C", "price": 100 },
  { "_id": 104, "name": "Product D", "price": 120 }
]

Nous voulons maintenant utiliser l'opération $lookup pour associer le champ product_id de la collection orders au champ _id de la collection products, et obtenir des informations détaillées sur le produit pour chaque commande.

Voici un exemple d'agrégation MongoDB qui implémente cette fonctionnalité :

Exemple

const { MongoClient } = require('mongodb'); async function main() { //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier selon l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { //Se connecter au serveur MongoDB await client.connect(); console.log("Connecté avec succès au serveur"); //Spécifiez la base de données const database = client.db('mydatabase'); //collection orders const ordersCollection = database.collection('orders'); //collection products const productsCollection = database.collection('products'); //Définir le pipeline d'agrégation et utiliser $lookup pour effectuer une jointure externe gauche const pipeline = [ { $lookup: { from: 'products', //Le nom de la collection à joindre localField: 'product_id', //Le champ de la collection locale à mettre en correspondance foreignField: '_id', //Le champ de la collection jointe à mettre en correspondance as: 'productDetails' //Le nom du champ à inclure dans les résultats de sortie } } ]; //Exécuter l'opération d'agrégation const result = await ordersCollection.aggregate(pipeline).toArray(); //Afficher les résultats de la requête console.log("Résultats de la requête de jointure externe gauche:"); console.log(result); } finally { //Veillez à fermer la connexion lorsque vous avez terminé await client.close(); } } main().catch(console.error);

Supprimer une collection

Nous pouvons utiliserdrop()méthode pour supprimer une collection :

drop()

var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("example"); //Supprimer la collection de test dbo.collection("test").drop(function(err, delOK) { //En cas de succès, delOK renvoie true ; sinon, il renvoie false if (err) throw err; if (delOK) console.log("Collection supprimée"); db.close(); }); });

Utilisation de Promise

Promise est une classe fournie par ECMAScript 6, destinée à écrire des tâches asynchrones complexes de manière plus élégante.

Si vous ne comprenez pas encore Promise, vous pouvez vous référer àJavaScript Promise。

L'exemple suivant utilise Promise pour créer une collection :

Exemple

const { MongoClient } = require('mongodb'); //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier en fonction de l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); //Utilisez Promise pour encapsuler le processus de connexion à la base de données function connectDB() { return new Promise((resolve, reject) => { //Se connecter au serveur MongoDB client.connect((err) => { if (err) { reject(err); } else { console.log("Connexion réussie au serveur MongoDB"); resolve(client.db()); //Retourne l'instance de base de données } }); }); } //Exemple d'utilisation connectDB() .then(database => { //Vous pouvez continuer à effectuer des opérations sur la base de données ici console.log("Connexion réussie à la base de données"); //Exemple : Afficher le nom de la base de données console.log("Nom de la base de données :", database.databaseName); //Si vous devez effectuer d'autres opérations, vous pouvez continuer à écrire du code ici //Par exemple, interroger, insérer des documents, etc. //Enfin, fermez la connexion client.close(); }) .catch(err => { console.error("Une erreur est survenue lors de la connexion à la base de données :", err); });

Opérations de données avec Promise

Maintenant, implémentons quatre opérations consécutives dans un seul programme : ajouter, interroger, mettre à jour et supprimer.

Exemple

const { MongoClient, ObjectId } = require('mongodb'); //URI de connexion MongoDB const uri = "mongodb://localhost:27017"; //Veuillez le modifier en fonction de l'adresse de votre serveur MongoDB //Créer un nouveau MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); //Utilisez Promise pour encapsuler le processus de connexion à la base de données function connectDB() { return new Promise((resolve, reject) => { //Se connecter au serveur MongoDB client.connect((err) => { if (err) { reject(err); } else { console.log("Connexion réussie au serveur MongoDB"); resolve(client.db()); //Retourne l'instance de base de données } }); }); } //Fonction pour ajouter un document function insertDocument(db, document) { const collection = db.collection('documents'); return new Promise((resolve, reject) => { collection.insertOne(document, (err, result) => { if (err) { reject(err); } else { console.log("Document ajouté avec succès"); resolve(result); } }); }); } //Fonction pour interroger des documents function findDocuments(db) { const collection = db.collection('documents'); return new Promise((resolve, reject) => { collection.find({}).toArray((err, docs) => { if (err) { reject(err); } else { console.log("Résultat de la requête des documents :"); console.log(docs); resolve(docs); } }); }); } //Fonction pour mettre à jour un document function updateDocument(db, id, updatedValues) { const collection = db.collection('documents'); return new Promise((resolve, reject) => { collection.updateOne({ _id: ObjectId(id) }, { $set: updatedValues }, (err, result) => { if (err) { reject(err); } else { console.log("Document mis à jour avec succès"); resolve(result); } }); }); } //Fonction pour supprimer un document function deleteDocument(db, id) { const collection = db.collection('documents'); return new Promise((resolve, reject) => { collection.deleteOne({ _id: ObjectId(id) }, (err, result) => { if (err) { reject(err); } else { console.log("Document supprimé avec succès"); resolve(result); } }); }); } //Exemple d'utilisation : effectuer les opérations d'ajout, d'interrogation, de mise à jour et de suppression de manière séquentielle async function performOperations() { try { const database = await connectDB(); //Ajouter un document const insertResult = await insertDocument(database, { name: "Document 1" }); //Interroger des documents const findResult = await findDocuments(database); //Mettre à jour le document const updatedDocId = insertResult.insertedId; //Utilisez l'ID renvoyé lors de l'insertion du document pour mettre à jour const updateResult = await updateDocument(database, updatedDocId, { name: "Document 1 mis à jour" }); //Supprimer le document const deleteResult = await deleteDocument(database, updatedDocId); //Afficher les résultats de l'opération console.log("Opération finale terminée :"); console.log("Résultat de la suppression du document :", deleteResult); } catch (err) { console.error("Une erreur s'est produite lors de l'exécution de l'opération :", err); } finally { //Veillez à fermer la connexion lorsque vous avez terminé await client.close(); } } //Exécuter l'opération performOperations();

Résultat de l'exécution :

数据库已连接
[ { _id: 5f1664966833e531d83d3ac6, site: 'example.com' } ]
[ { _id: 5f1664966833e531d83d3ac6, site: 'example.com' } ]
[]
Autres extensions