Cette page couvre les détails de connexion côté application pour MongoDB sur Stack Harbor PaaS. Le protocole MongoDB est le même entre pilotes — ils acceptent tous une URI de chaîne de connexion de la forme mongodb://... — donc le code par langage ci-dessous est essentiellement l’URI plus le constructeur du pilote.
Pour les options d’hôte (CNAME, IP privée, IP publique), voir d’abord Chaînes de connexion base de données.
Format de chaîne de connexion
Mono-nœud :
mongodb://{user}:{password}@node{node_id}-{environment_name}.{domain}:27017/{dbname}
Replica set (lister tous les membres, nommer le set) :
mongodb://{user}:{password}@node{a}-{env}.{domain}:27017,node{b}-{env}.{domain}:27017,node{c}-{env}.{domain}:27017/{dbname}?replicaSet=rs0
Options courantes en query string :
replicaSet=rs0— requis pour une connexion replica set.retryWrites=true— le pilote réessaie une fois les écritures idempotentes sur défaillance transitoire. Défaut dans les pilotes courants.w=majority— write concern ; bloquer jusqu’à ce qu’une majorité de membres ait accusé réception.readPreference=primary(ousecondary,nearest, etc.) — routage de lecture.tls=true— activer TLS en transit (le module Encryption in Transit doit être installé sur la base).
Java (mongodb-driver-sync)
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
String uri = "mongodb://{user}:{password}@node{node_id}-{environment_name}.{domain}:27017/{dbname}";
MongoClient client = MongoClients.create(uri);
Pour une URI replica set, le même appel MongoClients.create(uri) fonctionne — le pilote analyse replicaSet=rs0 depuis la query string et gère la découverte de topologie.
PHP
L’extension PHP MongoDB (et la bibliothèque mongodb/mongodb au-dessus) :
$client = new MongoDB\Client('mongodb://{user}:{password}@node{node_id}-{environment_name}.{domain}:27017/{dbname}');
$db = $client->selectDatabase('{dbname}');
$collection = $db->selectCollection('{collection}');
Pour un replica set, passer l’URI complète multi-membres au constructeur Client.
Python (pymongo)
from pymongo import MongoClient
client = MongoClient('mongodb://{user}:{password}@node{node_id}-{environment_name}.{domain}:27017/{dbname}')
db = client['{dbname}']
collection = db['{collection}']
Pour une application asyncio, utiliser motor (wrapper async autour de pymongo) :
from motor.motor_asyncio import AsyncIOMotorClient
client = AsyncIOMotorClient('mongodb://{user}:{password}@...')
db = client['{dbname}']
Node.js (mongodb)
import { MongoClient } from 'mongodb';
const uri = 'mongodb://{user}:{password}@node{node_id}-{environment_name}.{domain}:27017/{dbname}';
const client = new MongoClient(uri);
await client.connect();
const db = client.db('{dbname}');
const collection = db.collection('{collection}');
Pour les applications de longue durée, créer un MongoClient par processus et le réutiliser — le client maintient un pool de connexions interne. Ne pas appeler new MongoClient par requête.
Notes
- Pas de
localhost. Application et base sont sur des conteneurs distincts. Utiliser CNAME, IP privée ou IP publique. - Port par défaut. MongoDB écoute sur
27017par défaut. - TLS. Installer le module Encryption in Transit sur la base, puis ajouter
tls=trueà la chaîne de connexion. Le pilote fait le reste. - Pooling de connexions. Chaque pilote MongoDB maintient un pool interne. La règle au niveau application est : créer le client une fois au démarrage, le réutiliser. Ne pas ouvrir un nouveau client par requête.
Voir aussi
- MongoDB — référence au niveau moteur.
- MongoDB haute disponibilité — installation de replica set.
- Chaînes de connexion base de données — options d’hôte partagées entre moteurs.