日志
show dbs ; show collections; use mydb1(插入数据,数据库才被创建) db.c1.insert({name:"zhangsan",age:20}) ; db.help() ; db.dropDatabase()
创建集合:显示创建:db.createCollection(“集合名称”);隐式创建: db.custom.insert({name:”zhangsan”,age:20}) ; db.user.remove(); db.user.drop()
for(var i=0;i<10000;i++) {
Db.集合名称.insert({name:”zhangsan”+i,age:i})
}
db.集合名称.count();db.集合名称.remove({删除条件})
查询:
db.集合名称.find({条件});db.集合名称.findOne() (查询第一个);db.集合名称.find({},{});(第一个json 表示查询条件;第二个json 表示那些字段 l name:true)
db.collection.find({field:{~ :value}});(
$gt(大于) $lt(小于) $gte(大于等于) $ne(不等于)$lte(小于等于)
$all 其中的value是数组 ;例$all:[1,2]
)
db.user.find({address:{$in:[1]}}) $nin $in 取反db.user.find({adress:{$nin:[1]}})
$or 相当于关系型数据库当中的or db.user.find({$or:[{name:“张三”},{age:3}]})
查看某个键是存在。1表示存在,0表示不存在
db.customer.find({name:{$exists:1}})
筛选的个数;sort({age:-1}).skip(2).limit(3)
筛选后的结果; db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);
mongodb游标;
var x = db.user.find();
x.hasNext()
x.next();
8.Mongodb更新操作:
Db.collection.update(criteria,objNew,upsert,multi)
Criteria:查询条件的对象 (相当于where)
objNew: 设置更新内容的对象 (相当于set)
Upsert:存在更新,不存在插入(0)
Multi:多个条件全部更新(1)
例如: db.user.update({name:”张三”},{name:”李四”})
使用update 进行数据的更新,这样的更新会出现覆盖的现象。
使用$set如果存在则创建,如果不存在则更新
Update user set address= ‘bj’ where name =”user1”,
Db.user.update({name=”user1”},{$set:{address:”bj”}},0,1)
Db.user.update({name:”user1”},{$inc:{age:1}}),必须保证age是整型
$unset用来删除某个键
Db.user.update({name:”user1”},{$unset:{address:1}},0,1)
9.Mongodb索引的使用
查看查询扫描的行数和时间:
db.user.find({name:”zhangsan”}).explain();
9.1创建普通索引:(提高查询性能)
db.user.ensureIndex({key:1})
系统表当中可以查看索引:
db.system.indexes.find()
其中_id 会自动的创建索引
删除索引:
db.user.dropIndex({key:1})
将集合删除的时候,所有的索引都将删掉。
9.2创建唯一索引:(保证不重复,同时加速)
建立唯一索引:
db.user.ensureIndex({name:1},{unique:1})
删除索引:
db.user.dropIndex({key:1})
解析索引:
db.user.find({name:”zhangsan”}).explain()
Db.user.stats();
删除集合所有的索引都会删除
10.固定集合:(应用于日志)
事先创建且有大小固定的集合。
固定集合像环形队列,如果空间不足,最早的文档就会被删除。
db.createCollection(“collectionName”,{capped:true,size:100000,max:100})
其中 size 集合的大小,max是文档的数量
容量没满,根据文档的数量来工作,如果容量满了,根据文档的数量来工作。
11.备份和恢复(整库备份)
mongodump(备份) 和(mongorestore)(恢复)
备份数据:
mongodump -h localhost:27017 -d test -o e:mongodb\bak
-h 地址和端口
-d 备份的数据库
-o 备份地址
备份的数据库名后缀为bson,为json存储文件的二进制的方式
db.dropDatabase(); 将所有的数据库删掉
恢复数据:
mongorestore -h localhost:27017 -d test -directoryperdb E:mongodb\bak\test
-h 恢复数据库的名称和端口
-d 数据库的名称
-directoryperdb 恢复地址
12.导入和导出(单表备份)
备份和恢复之间的区别:
导入和导出的文件为文本文件(直接看的),
备份和恢复的文件为bson类型的文件
导出:
mongoexport -h localhost:27017 -d test -c person -o e:\mongodb\bak\person
-h :数据库的地址
-d:使用的数据库
-c:导出的集合
-o:导出的文件名
导入:
db.person.drop() //将集合删除掉
mongoimport -h localhost:27017 -d test -c person e:\mongodb\bak\person
13.安全和认证
如果开启服务的时候
mongod --dbpath=E:\mongodb\data --auth (登陆必须经过安全性检查)
创建admin数据库
admin数据库中的用户被视为超级管理员(即管理员)
use admin
db.addUser(“root”,”root”)
创建普通用户:
use test
db.addUser(“zhangsan”,”123”) //增删改查
db.addUser(“lishi”,”123”,true) //不能进行写操作
超级管理员和普通用户之间的区别:
超级管理员:可以进入任何的数据库进行操作
普通用户: 只能在当前的数据库进行操作
db.auth(“zhangsan”,”123”)
exit 退出
db.auth(“lisi”,”123”)
超级管理员只能够在admin数据库当中进行验证(可以进行任意的操作)
db.