开心档-软件开发入门之MongoDB - 连接

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本章将会讲解在前面的教程中,我们已经讨论了如何启动 MongoDB 服务,你只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可。

   

    • 作者简介:每天分享MongoDB教程的学习经验、和学习笔记。
    • 座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。
    • 个人主页: 雪奈ie的主页

    前言

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

    目录

    MongoDB - 连接

    启动 MongoDB 服务

    实例

    MongoDB 连接命令格式

    更多连接实例


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

    启动 MongoDB 服务

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

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

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

    标准 URI 连接语法:

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

    image.gif

      • mongodb:// 这是固定的格式,必须要指定。
      • username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登录这个数据库
      • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
      • portX 可选的指定端口,如果不填,默认为27017
      • /database如果指定username:password@,连接并验证登录指定数据库。若不指定,默认打开 test 数据库。
      • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

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

      选项 描述
      replicaSet=name 验证replica set的名称。 Impliesconnect=replicaSet.
      slaveOk=true|false * true:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器。 * false: 在 connect=direct模式下,驱动会自动找寻主服务器. 在connect=replicaSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。
      safe=true|false * true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS). false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。
      w=n 驱动添加 { w : n } 到getLastError命令. 应用于safe=true。
      wtimeoutMS=ms 驱动添加 { wtimeout : ms } 到 getlasterror 命令. 应用于 safe=true.
      fsync=true|false * true: 驱动添加 { fsync : true } 到 getlasterror 命令.应用于 safe=true. * false: 驱动不会添加到getLastError命令中。
      journal=true|false 如果设置为 true, 同步到 journal (在提交到数据库前写入到实体中). 应用于 safe=true
      connectTimeoutMS=ms 可以打开连接的时间。
      socketTimeoutMS=ms 发送和接受sockets的时间。

      实例

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

      mongodb://localhost

      image.gif

      通过 shell 连接 MongoDB 服务:

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

      image.gif

      这时候你返回查看运行 ./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)  # 该行表明一个来自本机的连接
      ……省略信息……

      image.gif


      MongoDB 连接命令格式

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

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

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

      image.gif

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

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

      image.gif

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

      mongodb://admin:123456@localhost/test

      image.gif

      更多连接实例

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

      mongodb://localhost

      image.gif

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

      mongodb://fred:foobar@localhost

      image.gif

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

      mongodb://fred:foobar@localhost/baz

      image.gif

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

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

      image.gif

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

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

      image.gif

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

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

      image.gif

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

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

      image.gif

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

      安全模式连接到localhost:

      mongodb://localhost/?safe=true

      image.gif

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

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

      image.gif

      上一篇

      MongoDB 固定集合(Capped Collections)

      下一篇

      MongoDB 覆盖索引查询


      相关实践学习
      MongoDB数据库入门
      MongoDB数据库入门实验。
      快速掌握 MongoDB 数据库
      本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
      相关文章
      |
      1月前
      |
      NoSQL MongoDB
      MongoDB入门-sort和投影
      这篇文章介绍了MongoDB中的排序(sort)和投影(projection)操作,通过示例代码展示了如何使用这些功能来控制查询结果的排序顺序和返回的字段。
      33 3
      MongoDB入门-sort和投影
      |
      1月前
      |
      NoSQL MongoDB
      MongoDB入门-MongoDB的CURD语句练习
      这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
      40 2
      |
      17天前
      |
      存储 NoSQL MongoDB
      MongoDB入门级别教程全(Windows版,保姆级教程)
      一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
      43 2
      MongoDB入门级别教程全(Windows版,保姆级教程)
      |
      5天前
      |
      NoSQL 网络安全 MongoDB
      MongoDB - 连接
      10月更文挑战第12天
      6 1
      |
      8天前
      |
      NoSQL 前端开发 JavaScript
      Node.js 连接 MongoDB
      10月更文挑战第9天
      23 0
      |
      1月前
      |
      存储 NoSQL MongoDB
      01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
      文章详细介绍了MongoDB的概览、应用场景、下载与连接方式,并涵盖了MongoDB的主要特性及其在数据存储方面的优势。
      22 0
      |
      2月前
      |
      JavaScript NoSQL 前端开发
      |
      2月前
      |
      NoSQL BI 数据处理
      【超实用攻略】MongoDB 聚合框架:从入门到精通,带你解锁数据处理新姿势!
      【8月更文挑战第24天】MongoDB是一款以其灵活性和高性能闻名的NoSQL数据库。其强大的聚合框架采用管道式处理,允许用户定义多个数据处理阶段如过滤、分组等。本文通过示例数据库`orders`和`products`,演示如何利用聚合框架计算各产品的总销售额。示例代码展示了使用`$lookup`连接两集合、`$unwind`打平数组及`$group`按产品ID分组并计算总销售额的过程。这突显了聚合框架处理复杂查询的强大能力,是进行数据分析和报表生成的理想选择。
      37 3
      |
      2月前
      |
      持续交付 jenkins C#
      “WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
      【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
      60 0
      |
      3月前
      |
      NoSQL MongoDB 数据库
      MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
      MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
      278 0