MongoDB 以及其安装

88 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

MongoDB 属于文档数据库,它属于 NoSQL 数据库中的典型代表。MongoDB 是专为可扩展、高性能和高可用性而设计的 NoSQL 数据库,如今在公司中的使用也比较频繁。

介绍

MongoDB 是由 C++ 语言编写的,是一个基于分布式存储的开源的文档数据库系统。在高负载的情况下,添加更多的节点可以保证服务器性能。MongoDB 旨在为 Web 应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,它是由字段(field)和值(value)对组成的数据结构,类似于 JSON 对象。字段的值可以包括其他文档、数组和文档数组,如下所示 👇:

{
    "name": "zhangsan",
    "age": 26,
    "gender": "男",
    "hobby": ["篮球","排球","羽毛球"]
}
{
    "name": "lisi",
    "age": 24,
    "gender": "女",
    "hobby": ["篮球","足球","羽毛球"]
}
。。。

⚠️ 注意:其中 value 支持多种数据类型,包括 Double 、String 、Object 、Array 、Date 等。

使用文档的优点是:

  • 文档(即对象)对应于许多编程语言中的内置数据类型
  • 嵌入式文档和数组减少了对昂贵连接的需求
  • 动态模式支持流畅的多态性

MongoDB 最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB 是一个面向文档集合的、模式自由的非关系型数据库。

MongoDB 一般会在下面这些场景下会使用到:

  • 网站数据:MongoDB 非常适合实时的插入、更新与查询数据,并具备网站实时数据存储所需的复制及高度伸缩性。
  • 缓存:MongoDB 也适合作为信息基础设施的缓存层。在系统重启之前,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载。
  • 大尺寸,低价值的数据:
  • 高伸缩性的场景:
  • 用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询。

安装

请去官网地址进行下载

图片描述

然后找到安装目录下的bin目录。新建一个data文件,在文件里面创建db和log目录,在log目录下面创建mongo.log。回到bin目录,创建创建mongo.config配置文件。并且打开配置文件,添加以下配置内容

dbpath=D:\MongoDB\data\db

logpath=D:\MongoDB\data\log\mongo.log

完成以上,MongoDB安装完成!接下来启动MongoDB数据库:

  1. 到安装MongoDB数据库的bin目录下打开cmd
  2. 先启动MongoDB服务--->执行命令:mongod --dbpath db目录所在路径
  3. 再启动MongoDB数据库---->执行命令:mongo

数据库创建

我们知道关系型数据库(比如 MySQL)有数据库字段索引等概念,同样在 MongoDB 中也有一些基本概念,比如:文档集合数据库等,这些也是 MongoDB 数据库的基本结构。

我们在学习 MongoDB 时,可以类比着 MySQL 数据库,比如下表就展示了 MongoDB 和 MySQL 各级之间的关系:

MongoDB 术语MySQL 术语解释
databasedatabase数据库/数据库
collectiontable集合/数据表
documentrow文档/数据行
fieldcolumn域/数据字段
indexindex索引/索引
primary keyprimary keyMongoDB 自动将 _id 字段设置为主键/主键
——table joinsMongoDB 不支持连接/表连接

示例:

在终端使用 mongo 命令进入交互客户端

mongo

使用 show dbs 命令查看所有数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

创建数据库

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

说明:DATABASE_NAME 这个数据库的名字自定义。如果数据库不存在,则创建数据库,否则切换到指定数据库。

  • 向 zs 数据库的 aa 集合中存储一条信息:{"name":"xiao", "age":18, "hobby":["篮球","排球"]}
db.aa.insertOne({"name":"xiao", "age":18, "hobby":["篮球","排球"]})
  • db.aa.insertOne(...),其中 db 指的是当前正在使用的数据库
  • aa 指的是集合的名字,这个名字可以自定义;
  • insertOne 函数就是用来向集合中添加文档的,其只能一次添加一条数据。

我们知道在 Map 集合中,一个键值对不允许出现相同的 key,同样在 MongoDB 中亦是如此,即使有相同的 key 也不会报错,而是直接覆盖。

总结:

  • 切换数据库(也可以用来新增数据库):use DATABASE_Name
  • 查看当前正在使用的数据库命令:db
  • 查看所有的数据库:show dbs
  • 向数据库中的集合存储一条数据的函数:db.集合名.insertOne(...)
  • 删除数据库的函数:db.dropDatabase()