MongoDB - Connexion

Dans ce tutoriel, nous allons discuter des différentes façons de se connecter à MongoDB.

Démarrer le service MongoDB

Dans les tutoriels précédents, nous avons discutécomment démarrer le service MongoDB, il vous suffit d'exécuter la commande suivante dans le répertoire bin du répertoire d'installation de MongoDBmongodbet c'est tout.

Après le démarrage, MongoDB affiche quelques informations nécessaires puis n'affiche plus rien, après quoi il attend que les connexions soient établies. Lorsqu'une connexion est établie, il commence à imprimer des informations de journal.

Vous pouvez utiliserMongoDB shellpour vous connecter au serveur MongoDB. Vous pouvez également utiliser PHP pour vous connecter à MongoDB. Dans ce tutoriel, nous utiliserons le MongoDB shell pour nous connecter au service MongoDB, et dans les chapitres suivants, nous présenterons comment se connecter aux services MongoDB via PHP, Python et Node.js.

Syntaxe de connexion URI standard :

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
  • mongodb://: en-tête de protocole, indique l'utilisation de MongoDB.
  • [username:password@]: (facultatif) informations d'authentification, y compris le nom d'utilisateur et le mot de passe.
  • host1[:port1][,...hostN[:portN]]: adresse et port du serveur, qui peuvent être l'adresse et le port d'un ou plusieurs serveurs MongoDB.
  • /[defaultauthdb]: (facultatif) base de données d'authentification par défaut.
  • [?options]: (facultatif) options de connexion.

Le format de connexion standard comprend plusieurs options, comme indiqué ci-dessous :

  • authSource: spécifie la base de données d'authentification.
  • replicaSet: spécifie le nom du jeu de réplicas.
  • ssl: active la connexion SSL (true ou false).
  • readPreference: spécifie la préférence de lecture, telle queprimary, primaryPreferred, secondary, secondaryPreferred, nearest。
  • connectTimeoutMS: spécifie le délai d'attente de connexion (millisecondes).
  • socketTimeoutMS: spécifie le délai d'attente de socket (millisecondes).

Se connecter à une instance MongoDB locale (port par défaut 27017) :

mongodb://localhost

Se connecter à une instance MongoDB locale, en spécifiant une base de données :

mongodb://localhost/mydatabase

Se connecter à une instance MongoDB locale à l'aide d'un nom d'utilisateur et d'un mot de passe :

mongodb://username:password@localhost/mydatabase

Se connecter à une instance MongoDB distante :

mongodb://remotehost:27017

Se connecter à un ensemble de réplicas :

mongodb://host1:27017,host2:27017,host3:27017/mydatabase?replicaSet=myReplicaSet

Se connecter à MongoDB avec SSL :

mongodb://username:password@localhost:27017/mydatabase?ssl=true

Se connecter avec plusieurs options :

mongodb://username:password@localhost:27017/mydatabase?authSource=admin&ssl=true

Python (PyMongo)

Exemple

from pymongo import MongoClient

client = MongoClient('mongodb://user:password@localhost:27017/mydatabase?authSource=admin')
db = client['mydatabase']

Node.js (Mongoose)

Exemple

const mongoose = require('mongoose');

mongoose.connect('mongodb://user:password@localhost:27017/mydatabase?authSource=admin', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'erreur de connexion :'));
db.once('open', function() {
  console.log('Connecté à MongoDB');
});

PHP (Mongoose)

Exemple

<?php
require 'vendor/autoload.php'; // Inclure le fichier d'autoload de Composer

$client = new MongoDB\Client("mongodb://localhost:27017"); // Se connecter à l'instance MongoDB locale
$database = $client->selectDatabase('mydatabase'); // Sélectionner la base de données
$collection = $database->selectCollection('mycollection'); // Sélectionner la collection

// Insérer un document
$result = $collection->insertOne(['name' => 'Alice', 'age' => 30]);
echo "Inséré avec l'ID d'objet '{$result->getInsertedId()}'";

// Interroger un document
$document = $collection->findOne(['name' => 'Alice']);
echo "Document trouvé : " . json_encode($document);
?>

Java

Exemple

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;

public class MongoDBConnection {
    public static void main(String[] args) {
        String uri = "mongodb://user:password@localhost:27017/mydatabase?authSource=admin";
        try (MongoClient mongoClient = MongoClients.create(uri)) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            System.out.println("Connecté à MongoDB");
        }
    }
}

Exemple

Connectez-vous au service MongoDB en utilisant le port par défaut.

mongodb://localhost

Connectez-vous au service MongoDB via le shell:

./mongosh
Current Mongosh Log ID:    66792d6b87657ebec9ed70f1
Connecting to:        mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.9
Using MongoDB:        7.0.11
Using Mongosh:        2.2.9

À ce stade, revenez et regardez la fenêtre où vous avez exécuté la commande./mongod, et vous pouvez voir d'où il s'est connecté au serveur MongoDB. Vous pouvez voir les informations suivantes:

……省略信息……
2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2015-09-25T17:22:27.336+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/data/db" } }
2015-09-25T17:22:27.350+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2015-09-25T17:22:36.012+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:37310 #1 (1 connection now open)  # 该行表明一个来自本机的连接

……省略信息……

Format de la commande de connexion MongoDB

Pour vous connecter au serveur MongoDB à l'aide d'un nom d'utilisateur et d'un mot de passe, vous devez utiliser le format 'username:password@hostname/dbname', 'username' est le nom d'utilisateur, 'password' est le mot de passe.

Utilisez un nom d'utilisateur et un mot de passe pour vous connecter et vous identifier à la base de données par défaut:

$ ./mongosh
MongoDB shell version: 4.0.9
connecting to: test

Connectez-vous au service MongoDB local en utilisant l'utilisateur admin avec le mot de passe 123456. Le résultat de sortie est le suivant:

> mongodb://admin:123456@localhost/
... 

Utilisez un nom d'utilisateur et un mot de passe pour vous connecter et vous identifier à une base de données spécifiée, le format est le suivant:

mongodb://admin:123456@localhost/test

Plus d'exemples de connexion

Connectez-vous au serveur de base de données local ; le port est celui par défaut.

mongodb://localhost

Connectez-vous à la base de données admin sur localhost avec le nom d'utilisateur fred et le mot de passe foobar.

mongodb://fred:foobar@localhost

Connectez-vous à la base de données baz sur localhost avec le nom d'utilisateur fred et le mot de passe foobar.

mongodb://fred:foobar@localhost/baz

Connectez-vous à une paire de réplicas ; le serveur 1 est example1.com, le serveur 2 est example2.

mongodb://example1.com:27017,example2.com:27017

Connectez-vous à un ensemble de réplicas avec trois serveurs (ports 27017, 27018 et 27019) :

mongodb://localhost,localhost:27018,localhost:27019

Connectez-vous à un ensemble de réplicas avec trois serveurs ; les opérations d'écriture sont appliquées sur le serveur primaire et les lectures sont réparties vers les serveurs secondaires.

mongodb://host1,host2,host3/?slaveOk=true

Connectez-vous directement au premier serveur, qu'il fasse partie d'un ensemble de réplicas, ou qu'il soit le serveur primaire, ou un serveur secondaire.

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

Lorsque vos serveurs de connexion ont la priorité et que vous devez également lister tous les serveurs, vous pouvez utiliser la méthode de connexion ci-dessus.

Connectez-vous à localhost en mode sécurisé :

mongodb://localhost/?safe=true

Connectez-vous à l'ensemble de réplicas en mode sécurisé, et attendez qu'au moins deux serveurs de réplicas aient écrit avec succès, avec un délai d'attente de 2 secondes.

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
Autres extensions