MongoDB
一、基本概念
1、MongoDB与关系数据库的概念对比:
2、连接Mongodb
mongodb的使用方式是客户服务器模式,即使用一个客户端连接mongodb数据库(服务端)。
mongodb://[username:aaa@qq.com]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 固定前缀
username:账号,可不填
password:密码,可不填
host:主机名或ip地址,只有host主机名为必填项。
port:端口,可不填,默认27017
/database:连接某一个数据库
?options:连接参数,key/value对
也可以在MongoDB安装目录下的bin启动mongo.exe,前提要先启动服务端。
二、MongoDB常用命令
1、show dbs;列出所有数据库。
2、use DataBase_Name;创建数据库,如果已存在则切换到该数据库,否则创建,新创建的数据库不显示,最少显示一个集合的数据库。
3、db.dropDatabase();删除数据库,先切换到数据库,然后在删除。
4、db;当前在哪个数据库。
三、集合
集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。
1、db.createCollection(name,options);创建name的集合,options参数可以省略。
2、db.collection.drop();删除collection集合。
四、文档
1、db.collection.insert(doc);在collection集合中插入文档doc,MongoDB会自动创建_id,类型是ObjectId与关系型数据库中的主键primary类似。
doc = {"empName":"张三","empAge":18,"empGender":"女"}
db.emps.insert(doc)
2、db.collection.remove();删除collection文档。remove函数里可以添加参数,例子如下:将会删除性别为女的文档。
db.emps.remove({"empGender":"女"})
3、db.collection.update(query,update,options);更新语法;
query:查询条件,相当于sql语句的where
update:更新文档内容
options:选项,可省略
4、$set修改器,使用$set修改指定要更新的key,key不存在则去创建,存在则去更新。
db.users.update({"_id":1},{$set:{"age":18,"name":"test01"}},{multi:true})
将符合条件,_id为1的所有文档改成年龄18,姓名test01
multi:false代表更新第一个匹配到的文档
true代表将所有匹配到的文档全部更新
5、db.collection.find(query,projection);query:查询条件,可不填;projection:投影查询key,可不填;
6、db.collection.find();查询collection集合中的所有文档;
7、db.collection.find({"name":"test"});查询collection集合中所有name为test的文档;
8、db.collection.find({"name":"test",{name:1,age:1,_id:0}});查询name为test的文档,只显示name和age,_id不显示,如果不写_id:0,则会自动显示_id,其余字段除非设置成1,否则不显示。
五、用户管理
1、创建用户
use admin
db.createUser(
{
user:"root",
pwd:"root",
roles:[{role:"root",db:"admin"}]
}
)
内置角色如下:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3 . 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase
6. 超级用户角色:root
2、show users;查询当前库下所有用户
3、db.dropUser("用户名");删除用户
4、db.changeUserPassword("username","newPwd");修改密码