MongodDB中有数据库(database)、集合(collection)、文档(document),其中数据库和集合不需要手动创建。当我们创建文档时,文档所在的集合或数据库不存在,会自动创建数据库和集合
数据库的CRUD(增删改查)的操作
插入
向数据库中插入文档——db.insert({doc})
db.stus.insert({name:”jack”,age:18,gender:”male”})
nInserted表示新增一条数据,同时新增了test数据库和stus集合
db..insertOne({})——插入一条
db..insertMany([{},{}])——插入多条
——当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识
如果_id自己指定,则系统不会在添加属性值,那必须确保它的唯一性
例:db.stus.insert([{name:“小丽”,age:16,gender:“女”},{name:“小华”,age:15,gender:“男”}]);
ObjectId是根据时间车来生成的,每一毫秒都会生成一个
查询
show dbs 或者 show database——查看当前现有的数据库
use 数据库名——进入到指定的数据库中
db——查看当前所处在的数据库
show collections——查看数据库中所有的集合
db.<collections>.find()——查看集合中的文档
db.<collection>.find({字段:值, 字段:值})——根据条件查询文档
db.<collection>.findOne()——查询集合中符合条件的第一个文档
db.<collection>.find().count()——统计数量
修改——update默认情况下只修改符合条件的第一个文档
db.<collection>.update({查询条件},{新对象})
注意:默认情况下使用新对象来替换新对象,慎用
db.<collection>.update({字段:值},{$set:{修改的字段:值}})——修改指定的字段属性
db.<collection>.update({字段:值},{$unset:{修改的字段:值}})----删除指定的字段属性
db.<collection>.updateOne——修改第一个符合条件的文档
db.<collection>.updateMany——修改多个符合条件的文档
db.<collection>.update({字段:值},{$set:{修改的字段:值}},{multi:true})——修改多个符合条件的文档
db.<collection>.replace()——替换
删除——remove默认情况下删除符合条件的所有文档
db.<collection>.remove({字段:值})----根据条件删除文档,并且默认情况下删除符合条件的所有文档
db.<collection>.remove({字段:值},true)----只会删除一个文档
db.<collection>.remove({})----删除集合中的所有文档
db.<collection>.deleteone——删除第一个符合条件的文档
db.<collection>.deletemany——删除多个符合条件的文档
db.<collection>.drop()----删除集合
db.dropDatabase()----删除数据库
排序
db.<collection>.find().sort({字段:1}) #值1表示升序排序, -1表示降序
索引
db.<collection>.ensureIndex ({字段:1})——创建索引 #值1表示升序排序,-1表示降序
db.<collection>.ensureIndex ({字段:1},name=””)——定义索引名称
db.<collection>.ensureIndex({字段:1},{unique:true})——创建唯一索引
db.<collection>.ensureIndex({字段:1},{backgroud:true})——在后台创建索引
db.<collection>.getIndexes()——查询索引
db.<collection>.dropIndex(“索引名”)——删除索引
视图
创建单集合视图
db.createView(视图名称,集合名称,[])——集合作为一张视图
db.createView(视图名称,集合名称,{$match:条件})——根据条件创建视图
db.createView(“student”,“stus”,{$match:{age:18}})
创建多集合视图
db.createView("视图名称","主查询集合",[{$lookup:{from:"关联集合",localField:"关联字段",foreignField:"外键",as:"为关联集合命名"}},{$project:{查询结果显示条件}}])
导入导出
mongoimport --db TEST --collection TZ_JCJ --type csv --headerline --file E:\XM\0MongoDB\csv;
备份与恢复数据库
Mongodump –h loaclhost:27017 –d test –o E:\XM\Mongodb
mongorestore -h loaclhost:27017 -d yhsj –dir E:\XM\0MongoDB\test
for /r D:\Program Files\MongoDB\Server\3.6\bin %i in (*.csv) do "mongoimport.exe" --host localhost --port 27017 --db test --type csv --headerline --ignoreBlanks --file E:\XM\0MongoDB\csv
@echo off
for /r %%file in (*.csv) do (
@echo %%file
"mongoimport.exe" -d test -c collectionName --file E:\XM\0MongoDB\csv --type csv --headerline)
``
**五、开启安全认证**
1 启动mongodb服务,运行服务端
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143159298.png)
2 运行客户端,创建一个拥有最高权限的用户管理员,cmd输入:
mongo --port 27017
use admin
db.createUser(
{
user: “huge”,
pwd: “huge”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” },
{ role:"__system",db:“admin” }
] }
)
3 关闭以上两个cmd窗口,在mongod.cfg文件里添加security: authorization: enabled
,开启安全认证,
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143231942.png)
然后重新启动mongodb服务
4 验证,cmd输入以下,如果返回值为 1 ,则成功
mongo --port 27017 -u “huge” -p “huge” --authenticationDatabase “admin”
use admin
db.auth(“huge”, “huge” )
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143259194.png)
5 这样就可以用huge用户名和密码登录所有数据库
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143308786.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143314388.png)
而不使用安全认证便无法连接
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143324364.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143330366.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
6 创建普通用户:打开nosql manager,登录admin数据库,然后在shell中输入如下:
(注:必须是从admin切到test_zls,我们所创建的所有用户都保存在system.users里面)
use admin
use test_zls
db.createUser(
{
user: “test_zls”,
pwd: “test_zls”,
roles: [ { role: “readWrite”, db: “test_zls” }]
}
)
运行如图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143358343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
7 验证,继续在shell输入:
use test_zls
db.auth(“test_zls”,“test_zls”)
运行如下,若返回1,则验证成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143421857.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
8 在左侧右键,选择创建新的mongodb连接,设置连接参数如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143432590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)
9 设置好之后,就可以用我们创建的普通用户登录了,一个用户可以有不同的权限,在创建用户时可以在“ roles: [ { role: "readWrite", db: "test_zls" }]”自定义
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190404143444912.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxMjM2NQ==,size_16,color_FFFFFF,t_70)