日志
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 admindb.addUser(“root”,”root”)创建普通用户:
use testdb.addUser(“zhangsan”,”123”) //增删改查db.addUser(“lishi”,”123”,true) //不能进行写操作超级管理员和普通用户之间的区别:
超级管理员:可以进入任何的数据库进行操作普通用户: 只能在当前的数据库进行操作db.auth(“zhangsan”,”123”) exit 退出db.auth(“lisi”,”123”)超级管理员只能够在admin数据库当中进行验证(可以进行任意的操作)
db.