MongoDB概念
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在简化开发和为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
主要功能
- 高性能
- 丰富的查询语言
- 高可用性
- 水平可伸缩性
- 支持多种存储引擎
Window安装MongoDB
官网下载社区版
选择Custom即可自定义安装地址
安装到服务
从MongoDB 4.0开始,您可以在安装过程中将MongoDB设置为Windows服务,也可以仅安装二进制文件。
我的配置如上
选择以下任一项:- 以网络服务用户身份运行服务(默认)这是Windows内置的Windows用户帐户
- 以本地或域用户身份运行服务
- Service Name: 指定服务名称。默认名称为MongoDB。如果您已经拥有使用指定名称的服务,则必须选择另一个名称。
- Data Directory: 指定数据目录,它对应于 –dbpath。如果目录不存在,安装程序将创建目录并将目录访问权限设置为服务用户。
- Log Directory: 指定日志目录,它对应于 –logpath。如果目录不存在,安装程序将创建目录并将目录访问权限设置为服务用户。
如果不将MongoDB配置为Windows服务,取消选中Install MongoD as a Service即可。
安装图形化界面,可以不安装(选择之后安装很慢)。
安装成功
安装失败
如果配置出错可能会出现安装失败的情况,有两种解决方式
命令行启动
在mongodb目录下创建data文件夹,在data中创建db文件夹
打开bin目录下的命令行(选中bin,shift+右键)输入mongod --dbpath ../data/db
即可看到启动成功。
这是一次性的启动方法,每次启动都要这么启动,下面有永久启动的方法。
安装服务
如果服务启动失败,命令行输入mongod.exe --remove
删除服务
建立几个文件夹和文件,必须创建,不然会出错
数据目录:D:\MongoDB\data\db
日志目录:D:\MongoDB\data\log
日志文件:D:\MongoDB\data\db\mongod.log
配置文件:D:\MongoDB\data\mongod.conf
日志文件不需要写入内容,配置文件内容如下:
1 | #数据库路径(根据自己安装的目录修改即可) |
跟之前一样,进入bin目录的命令行界面,输入
1 | # 根据自己目录调整 |
输入net start MongoDB就启动成功了
使用
数据库相关
命令 | 描述 |
---|---|
use DATABASE_NAME | 创建数据库 |
show db | 查看当前数据库 |
show dbs | 查看所有数据库 |
db.dropDatabase() | 删除当前数据库 |
db.collection.drop() | 删除集合 |
1 | # 切换数据库:如果数据库不存在,在插入数据时创建数据库,否则切换到指定数据库。 |
插入文档
命令 | 描述 |
---|---|
db.COLLECTION_NAME.insert(document) | 插入文档 |
db.COLLECTION_NAME.find() | 查询集合 |
1 | > db.col.insert({title: 'MongoDB 教程', |
插入文档可以使用insert()也可以使用save(),两种的区别在于:
- insert(),指明_id的情况,如果主键不存在,正常插入。主键存在,则抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据。
- save(),指明_id的情况下,如果主键不存在,则正常插入。主键存在,则修改已存在数据。
删除文档
1 | db.collection.remove( |
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档。
- writeConcern :(可选)抛出异常的级别。
1 | # 插入两条数据 |
更新文档
updat()方法
1 | db.collection.update( |
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的。
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
1 | >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) |
save方法
1 | db.collection.save( |
参数说明:
- document : 文档数据。
- writeConcern :可选,抛出异常的级别。
使用与insert()基本相同