MongoDB - 连接

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 10月更文挑战第12天

在本教程我们将讨论 MongoDB 的不同连接方式。

启动 MongoDB 服务

在前面的教程中,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。

执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。

你可以使用 MongoDB shell 来连接 MongoDB 服务器。你也可以使用 PHP 来连接 MongoDB。本教程我们会使用 MongoDB shell 来连接 Mongodb 服务,之后的章节我们将会介绍如何通过 PHP、Python 以及 Node.js 来连接 MongoDB 服务。

标准 URI 连接语法:

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

  • mongodb://:协议头,表示使用 MongoDB。
  • [username:password@]:(可选)认证信息,包括用户名和密码。
  • host1[:port1][,...hostN[:portN]]:服务器地址和端口,可以是一个或多个 MongoDB 服务器的地址和端口。
  • /[defaultauthdb]:(可选)默认认证数据库。
  • [?options]:(可选)连接选项。

标准的连接格式包含了多个选项(options),如下所示:

  • authSource:指定认证数据库。
  • replicaSet:指定副本集的名称。
  • ssl:启用 SSL 连接(true 或 false)。
  • readPreference:指定读偏好,如 primary, primaryPreferred, secondary, secondaryPreferred, nearest
  • connectTimeoutMS:指定连接超时时间(毫秒)。
  • socketTimeoutMS:指定套接字超时时间(毫秒)。

连接到本地 MongoDB 实例(默认端口 27017):

mongodb://localhost

连接到本地 MongoDB 实例,指定数据库:

mongodb://localhost/mydatabase

使用用户名和密码连接到本地 MongoDB 实例:

mongodb://username:password@localhost/mydatabase

连接到远程 MongoDB 实例:

mongodb://remotehost:27017

连接到副本集(Replica Set):

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

使用 SSL 连接到 MongoDB:

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

使用多个选项连接:

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

Python (PyMongo)

实例

from pymongo import MongoClient


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

db = client['mydatabase']

Node.js (Mongoose)

实例

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, 'connection error:'));

db.once('open', function() {

 console.log('Connected to MongoDB');

});

PHP (Mongoose)

实例

<?php

require 'vendor/autoload.php'; // 引入 Composer 自动加载文件


$client = new MongoDB\Client("mongodb://localhost:27017"); // 连接到本地 MongoDB 实例

$database = $client->selectDatabase('mydatabase'); // 选择数据库

$collection = $database->selectCollection('mycollection'); // 选择集合


// 插入文档

$result = $collection->insertOne(['name' => 'Alice', 'age' => 30]);

echo "Inserted with Object ID '{$result->getInsertedId()}'";


// 查询文档

$document = $collection->findOne(['name' => 'Alice']);

echo "Found document: " . json_encode($document);

?>

Java

实例

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("Connected to MongoDB");

       }

   }

}

实例

使用默认端口来连接 MongoDB 的服务。

mongodb://localhost

通过 shell 连接 MongoDB 服务:

./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

这时候你返回查看运行 ./mongod 命令的窗口,可以看到是从哪里连接到MongoDB的服务器,您可以看到如下信息:

……省略信息……

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)  # 该行表明一个来自本机的连接


……省略信息……


MongoDB 连接命令格式

使用用户名和密码连接到 MongoDB 服务器,你必须使用 'username:password@hostname/dbname' 格式,'username'为用户名,'password' 为密码。

使用用户名和密码连接登录到默认数据库:

$ ./mongosh

MongoDB shell version: 4.0.9

connecting to: test

使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示:

> mongodb://admin:123456@localhost/

...

使用用户名和密码连接登录到指定数据库,格式如下:

mongodb://admin:123456@localhost/test

更多连接实例

连接本地数据库服务器,端口是默认的。

mongodb://localhost

使用用户名fred,密码foobar登录localhost的admin数据库。

mongodb://fred:foobar@localhost

使用用户名fred,密码foobar登录localhost的baz数据库。

mongodb://fred:foobar@localhost/baz

连接 replica pair, 服务器1为example1.com服务器2为example2。

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

连接 replica set 三台服务器 (端口 27017, 27018, 和27019):

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

连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。

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

直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器。

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

当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。

安全模式连接到localhost:

mongodb://localhost/?safe=true

以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。

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

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
5月前
|
NoSQL Java MongoDB
java连接MongoDB
java连接MongoDB
|
5月前
|
存储 NoSQL 网络安全
修改mongodb的连接参数
在MongoDB中,你可以通过连接字符串(connection string)来配置连接参数。连接字符串是一个包含连接信息的字符串,可以包括主机地址、端口、认证信息、数据库名等。 下面是一些常见的连接参数,你可以根据需要进行修改: 1. **主机地址(host):** MongoDB服务器的地址。可以是IP地址或主机名。 ```mongodb mongodb://localhost:27017 ``` 2. **端口号(port):** MongoDB服务器的端口号。默认端口号是27017。 ```mongodb mongodb://localhost:
276 1
|
5月前
|
NoSQL JavaScript 前端开发
如何使用 Node.js 连接和操作 MongoDB 数据库?
如何使用 Node.js 连接和操作 MongoDB 数据库?
500 2
|
11月前
|
NoSQL MongoDB Python
python mongodb pymongo 连接 身份认证
python mongodb pymongo 连接 身份认证
106 0
|
11月前
|
NoSQL MongoDB 数据库
mongoDB入门教程一:下载安装和环境配置、连接运行
mongoDB入门教程一:下载安装和环境配置、连接运行
251 0
|
8天前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
23 0
|
1月前
|
存储 NoSQL MongoDB
01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
文章详细介绍了MongoDB的概览、应用场景、下载与连接方式,并涵盖了MongoDB的主要特性及其在数据存储方面的优势。
22 0
|
2月前
|
JavaScript NoSQL 前端开发
|
4月前
|
NoSQL 关系型数据库 Java
实时计算 Flink版产品使用问题之如何使用Flink MongoDB Connector连接MongoDB
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
NoSQL Shell 网络安全
MongoDB连接指南:从基础到进阶
MongoDB连接指南:从基础到进阶
143 1