MongoDB - Conexión
En este tutorial discutiremos las diferentes formas de conectarse a MongoDB.
Iniciar el servicio de MongoDB
En los tutoriales anteriores, ya hemos discutidocómo iniciar el servicio de MongoDB, solo necesitas ejecutar en el directorio bin del directorio de instalación de MongoDBmongodby listo.
Después de realizar la operación de inicio, mongodb no generará ninguna información después de mostrar alguna información necesaria, y luego esperará a que se establezca la conexión. Cuando se establece la conexión, comenzará a imprimir información de registro.
Puedes usarMongoDB shellpara conectarte al servidor MongoDB. También puedes usar PHP para conectarte a MongoDB. En este tutorial usaremos el shell de MongoDB para conectarnos al servicio de MongoDB. En los siguientes capítulos presentaremos cómo conectarse al servicio de MongoDB mediante PHP, Python y Node.js.
Sintaxis de conexión URI estándar:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
mongodb://: protocolo, indica que se utiliza MongoDB.[username:password@]: (opcional) información de autenticación, incluye nombre de usuario y contraseña.host1[:port1][,...hostN[:portN]]: dirección y puerto del servidor, puede ser la dirección y puerto de uno o más servidores MongoDB./[defaultauthdb]: (opcional) base de datos de autenticación predeterminada.[?options]: (opcional) opciones de conexión.
El formato de conexión estándar incluye varias opciones (options), como se muestra a continuación:
authSource: especifica la base de datos de autenticación.replicaSet: especifica el nombre del conjunto de réplicas.ssl: habilita la conexión SSL (true o false).readPreference: especifica la preferencia de lectura, comoprimary,primaryPreferred,secondary,secondaryPreferred,nearest。connectTimeoutMS: especifica el tiempo de espera de conexión (milisegundos).socketTimeoutMS: especifica el tiempo de espera del socket (milisegundos).
Conectarse a la instancia local de MongoDB (puerto predeterminado 27017):
mongodb://localhost
Conectarse a la instancia local de MongoDB, especificando la base de datos:
mongodb://localhost/mydatabase
Conectarse a la instancia local de MongoDB usando nombre de usuario y contraseña:
mongodb://username:password@localhost/mydatabase
Conectarse a una instancia remota de MongoDB:
mongodb://remotehost:27017
Conectarse a un conjunto de réplicas (Replica Set):
mongodb://host1:27017,host2:27017,host3:27017/mydatabase?replicaSet=myReplicaSet
Conectarse a MongoDB usando SSL:
mongodb://username:password@localhost:27017/mydatabase?ssl=true
Conectarse usando múltiples opciones:
mongodb://username:password@localhost:27017/mydatabase?authSource=admin&ssl=true
Python (PyMongo)
Ejemplo
client = MongoClient('mongodb://user:password@localhost:27017/mydatabase?authSource=admin')
db = client['mydatabase']
Node.js (Mongoose)
Ejemplo
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, 'connection error:'));
db.once('open', function() {
console.log('Connected to MongoDB');
});
PHP (Mongoose)
Ejemplo
require 'vendor/autoload.php'; // Importar el archivo de carga automática de Composer
$client = new MongoDB\Client("mongodb://localhost:27017"); // Conectarse a la instancia local de MongoDB
$database = $client->selectDatabase('mydatabase'); // Seleccionar la base de datos
$collection = $database->selectCollection('mycollection'); // Seleccionar la colección
// Insertar documento
$result = $collection->insertOne(['name' => 'Alice', 'age' => 30]);
echo "Inserted with Object ID '{$result->getInsertedId()}'";
// Consultar documento
$document = $collection->findOne(['name' => 'Alice']);
echo "Found document: " . json_encode($document);
?>
Java
Ejemplo
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("Connected to MongoDB");
}
}
}
Ejemplo
Conectarse al servicio de MongoDB usando el puerto predeterminado.
mongodb://localhost
Conectarse al servicio de MongoDB a través del 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
En este momento, regresas a revisar la ventana que ejecuta./mongodel comando, podrás ver desde dónde se conecta al servidor de MongoDB, y verás la siguiente información:
……省略信息……
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) # 该行表明一个来自本机的连接
……省略信息……
Formato del comando de conexión MongoDB
Para conectarse al servidor MongoDB con nombre de usuario y contraseña, debes usar 'username:password@hostname/dbname' formato, 'username' es el nombre de usuario, 'password' es la contraseña.
Conectarse e iniciar sesión en la base de datos predeterminada usando nombre de usuario y contraseña:
$ ./mongosh MongoDB shell version: 4.0.9 connecting to: test
Con el usuario admin y la contraseña 123456, conéctese al servicio local de MongoDB. El resultado de salida es el siguiente:
> mongodb://admin:123456@localhost/ ...
Conectarse e iniciar sesión en una base de datos específica usando nombre de usuario y contraseña, el formato es el siguiente:
mongodb://admin:123456@localhost/test
Más ejemplos de conexión
Conectarse al servidor de base de datos local, con el puerto predeterminado.
mongodb://localhost
Iniciar sesión en la base de datos admin de localhost con el usuario fred y la contraseña foobar.
mongodb://fred:foobar@localhost
Iniciar sesión en la base de datos baz de localhost con el usuario fred y la contraseña foobar.
mongodb://fred:foobar@localhost/baz
Conectarse a un par de réplicas (replica pair), donde el servidor 1 es example1.com y el servidor 2 es example2.
mongodb://example1.com:27017,example2.com:27017
Conectarse a un conjunto de réplicas (replica set) con tres servidores (puertos 27017, 27018 y 27019):
mongodb://localhost,localhost:27018,localhost:27019
Conectarse a un conjunto de réplicas de tres servidores, las operaciones de escritura se aplican al servidor principal y las consultas se distribuyen a los servidores secundarios.
mongodb://host1,host2,host3/?slaveOk=true
Conectarse directamente al primer servidor, ya sea parte de un conjunto de réplicas, servidor principal o servidor secundario.
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
Cuando tu servidor de conexión tiene prioridad y además necesitas listar todos los servidores, puedes usar el método de conexión anterior.
Conectarse a localhost en modo seguro:
mongodb://localhost/?safe=true
Conectarse al conjunto de réplicas en modo seguro, esperando que al menos dos servidores de réplica confirmen la escritura correctamente, con un tiempo de espera de 2 segundos.
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000Otras extensiones