MongoDB数据库安装与使用基础深入浅出

MongoDB数据库安装与使用基础深入浅出

 

MongoDB是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品。它支持的数据结构非常松散,是类似json的bson格式(bson数据格式基于json数据格式),因此可以存储比较复杂的数据类型,一个集合中可以包含不同的文档——文档的字段数、内容和大小都可以不同。

使用MongoDB场景有:

大数据

内容管理和交付

移动应用/社交应用

用户数据管理

数据中心

 

mongodb官网 https://www.mongodb.com/

官方文档中文版 https://docs.mongoing.com/

 

关系型数据库与mongodb比较:

关于MongoDB的集合与文档说明:

文档

文档是关系数据库的一行,它是一个对象,由键值对构成,是 json 的扩展形式。如:

{"name": "abc", "age": 28, "gender": "male"}

集合

集合是关系数据库中的表。可以存储多个文档,结构可以不固定。如:

{"name": "abc", "age": 28, "gender": "male"}

{"title": "apple", "price": 3}

 

MySQL中的许多概念在MongoDB中一些常见具有相近的概念类比:

SQL Terms/Concepts

MongoDB Terms/Concepts

Database (数据库)

database(数据库)

Table (表格)

Collection (集合)

row(行)

document or BSON document(文档或BSON文档)

column(列)

field(字段)

 

在Window10中的安装配置

打开官网,下载社区版 (community),参见下图:

MongoDB 目前分为 社区版 (community) 和 企业版(enterprise)

企业版的收费,社区版是免费的。

这里选取社区版 (community)

 

下载 .msi 安装版,下载后双击该文件,按操作提示安装即可。

我下载的是mongodb-windows-x86_64-4.4.5-signed.msi

双击运行 msi 文件,开始安装

 

勾选 I accept,单击Next

您可以选择完整(建议大多数用户使用)或自定义(Custom)设置类型。完整安装选项将MongoDB和MongoDB工具安装到默认位置。自定义设置选项允许您指定安装哪些可执行文件以及安装位置。在此单击Complete。

附、若你选择单击自定义(Custom)

可以单击“Browse…”按钮更改可执行文件的安装位置

 

选择其中一个:

Run the service as Network Service user (Default):以网络服务用户身份运行服务(默认),这是Windows内置的Windows用户账户

Run the service as a local or domain user以本地或域用户身份运行服务,对于现有的本地用户账户,请为账户域指定句点(即.点),并为用户指定账户名和账户密码。

Service Name服务名称),默认名称为MongoDB。如果已经有具有指定名称的服务,则必须选择其他名称。

Data Directory(数据目录),可以改变,在此将默认的C盘改为D盘

Log Directory(日志目录),可以改变,,在此将默认的C盘改为D盘

其它保持默认,单击Next

默认选中install MongoDB Compass,这是个MOngoDB的可视化(图形用户界面)工具;建议不选中,因为安装会很慢,且不易成功,之后可以单独安装。

保持默认,单击Next

点击 Install,

等待安装完成(completed)。

单击Finish。

提示:早期版本需要配置服务,新版本的 MongoDB 安装时已经自行完成配置。现在,打开服务可以看到(通过 cmd->services.msc 可找到 mongodb服务),参见下图:

 

附、MongoDB服务的删除和安装

服务启动失败,可以先删除安装的服务,重新安装

方法:管理员权限运行cmd, 在其中使用命令  mongod.exe --remove --serviceName "MongoDB" 

其中,"MongoDB" 为服务名。

安装 MongoDB服务

通过执行mongod.exe,使用--install选项来安装服务,使用--config选项来指定之前创建的配置文件。

mongod.exe --config "C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg" --install

可以在配置文件(例如:C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg)或命令行中通过 --dbpath 选项指定。如mongod --dbpath "D:\Program Files\MongoDB\Server\4.4\data" --logpath "D:\Program Files\MongoDB\Server\4.4\log\mongod.log" --install --serviceName "MongoDB"

路径按你的实际情况确定。

如果需要,您可以安装 mongod.exe 或 mongos.exe 的多个实例的服务。只需要通过使用 --serviceName 和 --serviceDisplayName 指定不同的实例名。只有当存在足够的系统资源和系统的设计需要这么做。

启动MongoDB服务 net start MongoDB

关闭MongoDB服务 net stop MongoDB

 

从MongoDB安装目录下的 bin 目录中的可以看到下图内容:

安装目录的 bin 目录下可以看到 mongo.exe,运行它可以连接MongoDB服务,参见下图:

为了方便运行mongo.exe,可以将C:\Program Files\MongoDB\Server\4.4\bin设置环境变量path中:

右键此电脑->属性->高级系统设置->环境变量->系统变量->path->编辑

 

下面介绍在命令行方式操作数据库——CRUD (Create、Read、Update、Delete)

需要先连接MongoDB, 创建、切换到数据库之后,才可进行CRUD

 

☆连接MongoDB

在命令窗口中运行 mongo 

将出现提示符 >,就可以在提示符 >后输入MongoDB语句了。参见下图:

MongoDB自带mongo shell,是个交互式终端,可以在里面以命令行方式操作数据库。

 

☆关闭与MongoDB连接,提示符 >后输入

exit 再按下回车键

 

☆MongoDB 创建、切换数据库的语法格式如下:

use 数据库名

如 use testDB

如果数据库不存在,则创建数据库,否则切换到指定数据库。

 

提示:MongoDB 中默认的数据库为 test,如果你没有用“use 数据库名” 创建、切换数据库,将默认使用test 数据库。

 

☆显示数据库命令show dbs

刚创建的数据库testDB 并不在数据库的列表中,要显示它,我们需要向testDB数据库插入一些数据。空数据库不会显示,需要向其插入至少一个文档

☆插入文档数据命令db.testDB.insert({"name":"菜鸟"})

 

数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。

不能是空字符串("")。

不得含有' '(空格)、.、$、/、\和\0 (空字符)。

应全部小写。

最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

 

显示当前数据库对象或集合命令db

 

☆删除数据库命令语db.dropDatabase()

 

集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

比如,我们可以将以下不同数据结构的文档插入到集合中:

{"site":"www.baidu.com"}

{"site":"www.google.com","name":"Google"}

{"site":"www.runoob.com","name":"菜鸟教程","num":5}

当第一个文档插入时,集合就会被创建。

合法的集合名

集合名不能是空字符串""。

集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。

集合名不能以"system."开头,这是为系统集合保留的前缀。

用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。 

 

MongoDB创建集合分为两种方式

法一、db.集合名.insert(文档数据),如:

db.person.insert({'name': 'jerry', 'age': 28})

向不存在的集合中第一次插入数据时,集合会被自动创建出来。

法二、db.createCollection(name, options)

其中,name是要创建的集合名称,options是一个文档,用于指定集合的配置。

参数

类型

描述

Name

String

要创建的集合名称

Options

Document

(可选)指定内存大小、索引等选项

手动创建集合,指定内存上限为4个字节

db.createCollection('person_1', {'capped': true, 'size': 4})

 

向指定集合中输入文档数据

db.集合名称.insert(文档数据)

如向.person_1集合输入两条文档数据{'name': 'jerry1'}, {'name': 'jerry2', 'age': 23 }

db.person_1.insert({'name': 'jerry1'})

db.person_1.insert({'name': 'jerry2', 'age': 23 })

 

查看指定集合是否有上限

db.集合名称.isCapped()

如db.person_1.isCapped()

 

☆查看集合:

show tables / show collections

 

☆查看当前数据库中指定集合的所有文档语法

db.集合名称.find()

如查看当前数据库中集合person的所有文档

db.person.find()

 

☆删除集合语法

db.集合名称.drop()

db.person.drop()

 

文档(Document)

文档(Document)

文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

一个简单的文档例子如下:

{"name":"菜鸟"}

文档中的键/值对是有序的。

文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。

MongoDB区分类型和大小写。

MongoDB的文档不能有重复的键。

文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

文档键命名规范:

键不能含有\0 (空字符)。这个字符用来表示键的结尾。

.和$有特别的意义,只有在特定环境下才能使用。

以下划线"_"开头的键是保留的(不是严格要求的)。

 

☆插入文档

前面提到过,再补充之,语法如下:

db.集合名称.insert(文档数据)

db.集合名称.save(文档数据)

两者都可将一个或多个文档插入到集合中,即可以在insert()命令中,传递一个文档数组,如:

db.qikegu.insert(

[

   {

      title: 'MongoDB 入门',

      description: 'MongoDB是一个以文档为中心的NOSQL数据库',

      by: 'qikegu.com',

   },

   {

      title: 'MongoDB 优势',

      description: "MongoDB相对于RDBMS的优势",

      by: 'qikegu.com',

       comments: [  

         {

            user:'user1',

            message: 'My first comment',

         }

      ]

   }

])

参见下图:

插入文档的方法还有:

db.集合名称.insertOne() 将单个文档插入集合中。

db.集合名称.insertMany()将多个文档插入一个集合中。

db.test.insertMany([

   {item: "card",qty: 15},

   {item: "envelope", qty: 20},

   {item: "stamps", qty: 30}

]);

 

☆查询文档

法一、没有结构化的的方式显示结果,语法:

db.集合名称.find(query, projection)

参数说明:

query :可选,使用查询操作符指定查询条件,如果忽略此选项则返回集合中的所有文档。MongoDB 支持条件操作符如下:

操作符

格式

实例

等于(=)

{<key> : {<value>}}

db.test.find( {price : 24} )

大于(>)

{<key> : {$gt : <value>}}

db.test.find( {price : {$gt : 24}} )

小于(<)

{<key> : {$lt : <value>}}

db.test.find( {price : {$lt : 24}} )

大于等于(>=)

{<key> : {$gte : <value>}}

db.test.find( {price : {$gte : 24}} )

小于等于(<=)

{<key> : {$lte : <value>}}

db.test.find( {price : {$lte : 24}} )

不等于(!=)

{<key> : {$ne : <value>}}

db.test.find( {price : {$ne : 24}} )

与(and)

{key01 : value01, key02 : value02, ...}

db.test.find( {name : "《MongoDB 入门教程》", price : 24} )

或(or)

{$or : [{key01 : value01}, {key02 : value02}, ...]}

db.test.find( {$or:[{name : "《MongoDB 入门教程》"},{price : 24}]} )

 

projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

 

使用查询操作符指定查询条件的

查询 qty = 20 的记录

db.test.find({"qty": 20});

相当于: select * from test where qty = 20;

 

查询 qty > 15 的记录

db.test.find({qty: {$gt: 15}});

相当于:select * from test where qty >15;

 

查询 item ="envelope", qty = 20 的数据

db.test.find({item:"envelope", qty: 20});

相当于:select * from test where name = "envelope" and qty = ‘20;

 

法二、格式化的方式显示结果,语法:

语法

db.集合名称.find().pretty()

 

☆更新文档

update()方法的基本语法如下

db.集合名称.update(

   <query>,

   <update>,

   {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>

   }

)

参数说明:

query : update的查询条件。

update : update的对象和一些更新的操作符(如$inc...)等。

【数据更新操作符

1.$inc

用法:{$inc:{field:value}}

作用:对一个数字字段的某个field增加value

2.$set

用法:{$set:{field:value}}

作用:把文档中某个字段field的值设为value

3.$unset

用法:{$unset:{field:1}}

作用:删除某个字段field

……

upsert : 为布尔型可选项,这个参数的意思是,如果不存在update的记录,是否插入这个新的文档, true为插入,默认是false,不插入。

multi : 为布尔型可选项,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

writeConcern :可选,抛出异常的级别。

 

假设test集合中插入了多条数据如下:

db.test.insertMany ([

    { item : "card",qty : 15 },

    { item : "envelope", qty: 20 },

    { item : "stamps", qty: 30 }

]);:

若将 item 为 card 的数量 qty 更正为 35,代码如下:

db.test.update(

{

    item: "card"

},

{

    $set: {qty: 35}

}

)

【对此例你能说出条件部分吗?就是其中的

{

    item: "card"

}

☆删除文档

db.集合名称.remove(

   <query>,

   {

     justOne: <boolean>,

     writeConcern: <document>

   }

)

参数说明:

query :(可选)删除的文档的条件。

justOne : (布尔型的可选项)默认为false,删除符合条件的所有文档,如果设为 true,则只删除一个文档。

writeConcern :(可选)抛出异常的级别。

、将 item 为 stamps 的删除

db.test.remove(

{

    item: "stamps"

}

)

 

mongodb修改数据语句,可参考 https://blog.csdn.net/weixin_39923262/article/details/111865832

 

Windows10中为 MongoDB 安装可视化工具 MongoDB Compass

官网下载https://www.mongodb.com/try/download/compass

 

安装很简单,除了安装路径有需求的要改一下,就不多说了。安装成功后会出现在开始菜单上,如下图所示:

 

下面简要介绍其使用

第一次启动MongoDB Compass,出现欢迎(Welcome)界面

其中有Performance Charts(性能图表),如下图:

关闭欢迎(Welcome)界面,随后出现Privacy Settings(隐私设置)界面,如下图:

 

连接成功会出现admin,config,local和test,说明正式进入数据库,你就可以根据语法进行操作了,如下图:

 

下面简要介绍如何利用MongoDB可视化工具 Compass操作数据库。

 

创建数据库,点击绿色的”CREATE DATABASE”按钮,出现如下对话框:

 

删除数据库

 

增加数据库集合

 

点击左侧testDB数据库看到如下集合情况,可以点击绿色“CREATE COLLECTION”按钮直接创建集合

 

在集合中增加文档

点击右边对应的数据库名,进入数据库(集合),点击ADD DATA,再单击其中的insert document

 

查询数据

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值