一、安装与配置
1、下载安装
#1、安装路径为D:\MongoDB,将D:\MongoDB\bin目录加入环境变量 #2、新建目录与文件 D:\MongoDB\data\db D:\MongoDB\log\mongod.log #3、新建配置文件mongod.cfg,参考:https://docs.mongodb.com/manual/reference/configuration-options/ systemLog: destination: file path: "D:\MongoDB\log\mongod.log" logAppend: true storage: journal: enabled: true dbPath: "D:\MongoDB\data\db" net: bindIp: 0.0.0.0 port: 27017 setParameter: enableLocalhostAuthBypass: false #4、制作系统服务 mongod --config "D:\MongoDB\mongod.cfg" --bind_ip 0.0.0.0 --install #或者 mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install #5、启动\关闭 net start MongoDB net stop MongoDB #6、登录 mongo #链接:http://www.runoob.com/mongodb/mongodb-window-install.html
2、账号管理
#账号管理:https://docs.mongodb.com/master/tutorial/enable-authentication/ #1、创建账号 #创建超级用户 use admin db.createUser( { user: "root", pwd: "123", roles: [ { role: "root", db: "admin" } ] } ) #创建普通用户 use test db.createUser( { user: "egon", pwd: "123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "db1" } ] } ) #2、重启数据库 mongod --remove mongod --config "C:\mongodb\mongod.cfg" --bind_ip 0.0.0.0 --install --auth #或者(与制作系统服务对应) mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
#3、登录:注意使用双引号而非单引号 mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin" #也可以在登录之后用db.auth("账号","密码")登录 mongo use admin db.auth("root","123") #推荐博客:https://www.cnblogs.com/zhoujinyi/p/4610050.html
二、基本操作
1、数据库操作
a、增:
use db1
如上,db1为创建的数据库的名字,执行上述命令时,如果db1数据库已经存在,则是将切换到此数据库下;如果此数据库不存在,则是创建一个新的数据库,同时也会切换到此数据库下。
b、查:
show dbs #查看所有存在的数据 db #查看当前正在使用的数据库
注意一点,通过show dbs并不会看到刚才创建的db1数据库,主要是因为数据库中并没有数据,只有数据中有数据的时候才可以看见此数据库。
c、删:
use db1 #第一步:切换到要删除的数据库下 db.dropDatabase() #第二步:删除当前状态下的数据库
提示:数据库相关操作的方法,可以通过db.help()方法查看。
2、集合操作
集合就是一组文档。如果将MongoDB中的一个文档比喻为关系型数据的一行,那么一个集合就是相当于一张表。集合存在于数据库中,通常情况下为了方便管理,不同格式和类型的数据应该插入到不同的集合,但其实集合没有固定的结构,这意味着我们完全可以把不同格式和类型的数据统统插入一个集合中。
a、增:
当一个文档插入时,集合就被创建,具体如下实例:
b、查:
show tables #或者 show collections
c、删:
提示:通过db.集合名.help()可以查看集合操作的相关方法。
3、文档操作
(1)增
添加一条数据:除了之前实例中我们将要添加的有序字典直接放在insert方法里面,我们还可以按照如下方式,先在全局定义要插入有序字典数据,然后直接将这个变量赋给insert方法,这样的好处是全局数据可以被多次使用。
添加多条数据:上述的insert方法一次性只能插入一个文档数据,当然也可以一次性插入多个文档,但是需要使用insertMany方法,接收的文档必须是一个列表的形式,具体实例如下:
(2)查
如下实例介绍了模糊查询的查询方式,查找集合中所有的文档或者第一条文档,其中使用db.users.find().pretty()可以让查询的结果以更清晰的结构显示,这里就不做具体的实例结果展示。
(3)改
文档的修改主要用到的是update方法,其主要参数及用法介绍如下:
update() 方法用于更新已存在的文档。语法格式如下: db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } ) 参数说明:对比update db1.t1 set name=‘EGON‘,sex=‘Male‘ where name=‘egon‘ and age=18; query : 相当于where条件。 update : update的对象和一些更新的操作符(如$,$inc...等,相当于set后面的 upsert : 可选,默认为false,代表如果不存在update的记录不更新也不插入,设置为true代表插入。 multi : 可选,默认为false,代表只更新找到的第一条记录,设为true,代表更新找到的全部记录。 writeConcern :可选,抛出异常的级别。 更新操作是不可分割的:若两个更新同时发送,先到达服务器的先执行,然后执行另外一个,不会破坏文档。
1、部分内容修改
(1)upsert参数
当设置upsert未true时,结果会发生变化,若没有符合要求的文档对象时,要修改的内容将以一条新的文档插入集合中,如下:
multi参数:
但是当设置{"multi":true}时,情况也会发生变化,将所有符合条件的文档更改为要更改的内容,但是对于多个对象修改,必须使用修改器,如下例:
2、全新文档替换
方式1:
方式2: