1. 安装MongoDB
安装MongoDB比较简单,下载地址https://www.mongodb.com/download-center/community
里面有解压版本跟安装版本,选择一个适合自己的版本,进行下载。我这里选择下载地址是
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.1.10-signed.msi 这个版本进行安装,安装非常简单,直接点击Next就行,有的安装过程中会卡中,取消勾选Install MongoDB Compass进行安安装。
2. MongoDB使用
我这里安装是用Windows启动的,直接
win+r ,输入cmd,打开MongoDB安装bin位置,解压版的同理,没有报错,MongoDB安装成功
一. 使用shell
进入bin目录,运行mongo.exe启动MongoDB数据库,进入shell,首先进行创建用户,首先再控制台中使用user baike,切换到baike数据库,MongoDB如果检测到baike不存在,会自动创建,然后使用db.createUser在数据库中创建一个用户:
>use baike
>db.createUser(
{
user:"test",
pwd:"123%abc",
roles:[
{ role: "readWrite", db:"baike" }
]
}
)
字段user和pwd分别表示用户的名称和密码,roles代表了用户角色,readWrite 表示数据库读写权限,db表示限定的数据库是baike。
创建用户后,需要重新启动MongoDB,并且使用—auth参数,这样就开打了数据库验证功能,
net STOP MongoDB 关闭。
net START MongoDB 开启。
>use baike
switched to db baike
>db.auth("test","123%abc!")
1
再次用shell连接上,控制台输出1,表示登录成功。
二. 指定数据库
通过use命令可以指定使用的数据库,要是数据库不存在就会创建一个,可以通过“db”命令查看当前正在使用那个数据库,通过db.help()方法开获取更多命令。
>use test2
switched to db test2
命令 | 作用 |
show dbs | 查看全部数据库 |
show collections | 显示当前数据库中的集合(类似关系数据库中的表) |
show users | 查看当前数据库的用户信息 |
use | 切换数据库跟mysql一样 |
db;或者db.getName(); | 查看当前所在数据库 |
db.help(); | 显示数据库操作命令,里面有很多的命令 |
db.foo.help(); | 显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 |
db.foo.find(); | 对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) |
db.foo.find( { a : 1 } ) | 对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1 |
二. 插入文档
MongoDB 通过集合(Collection)来管理数据库,类似于数据库表,集合包含了多个文档(Document),文档类似于数据库表的记录,MongoDB不需要显示地创建集合,可以直接给集合添加文档,比如给baike集合添加一个条目。
>db.baike.insert({_id:"springboot",desc:"快速分布式开发框架",tag:["IT","Spring"],comment:{good:1256,bad:12}})
baike 是集合的名字,当不存在集合的时候会自动创建此集合。insert方法是用JSON格式插入一个文档。
- _id,MongoDB一下画线开头的字段都有特殊的意义,表示文档的主键,如果文档没有提供主键,则自动生成一个ObjectID类型的主键。
- desc,baike条目的描述。文档可以包含任意属性及任意文档。
- tag,baike的tag,用数组来保存,MongoDB的字段可以用是字符串、数字、boolean,或者日期等类型,也可以是文档类型。
- comment:此字段是一个JSON文档,分别包含点赞和踩的数量
三. 查询文档
MongoDB支持按照主键查询,也可以按照条件进行查询。
- db.baike.find() 查询所有文档。
- db.baike.find({_id,“springboot”}) 通过条件查询。
- db.baike.find({“comment.good”:{$gt:1000} } ) 查询点赞数量大于1000的条目。
- db.baike.find({“comment.good”:{KaTeX parse error: Expected 'EOF', got '}' at position 8: gt:1000}̲,"comment.good"…lt:100}}) 查询被点赞超过1000或小于100的条目。
- db.baike.find({$or:[{"_id":“springboot”},{"_id":“beetl”}]) 使用or查询。
- db.baike.find({_id:{$in:[“springboot”,“beetl”]}}) 使用in查询。
- db.baike.find({“desc”?.框架。/}) 模糊查询。
$gt 相当于“>”
$gte 相当于“>=”
$lt 相当于“<”
$lte 相当于“<=”
$eq 相当于“==”
$ne 相当于“!=”
$in 等同于in
$nin 等同于not in
四. 更新操作
MongoDB的更新操作类似关系型数据库,提供以下API:
db.collection.updateOne(< filter>,< update>,< options>)
db.collection.updateMany(< filter>,< update>,< options>)
db.collection.replaceOne(< filter>,< update>,< options>)只更新第一条记录:
db.col.update( { “count” : { $gt : 1 } } , { $set : { “test2” : “OK”} } );
全部更新:
db.col.update( { “count” : { $gt : 3 } } , { $set : { “test2” : “OK”} },false,true );
只添加第一条:
db.col.update( { “count” : { $gt : 4 } } , { $set : { “test5” : “OK”} },true,false );
全部添加进去:
db.col.update( { “count” : { $gt : 5 } } , { $set : { “test5” : “OK”} },true,true );
全部更新:
db.col.update( { “count” : { $gt : 15 } } , { $inc : { “count” : 1} },false,true );
只更新第一条记录:
db.col.update( { “count” : { $gt : 10 } } , { $inc : { “count” : 1} },false,false );
五. 删除操作
按照条件删除文档,以下为没有指定条件,删除所有文档:
db.baike.deleteMany({})
按照条件删除一个文档
db.baike.deleteOne({_id:“springboot”})