mongodb属于nosql数据库,是一个文档型数据库,nosql实际上是相对于sql数据库而言的。传统的sql数据库存在一系列的问题。好比:须要遵循ACID范式,数据量过大的时候性能降低,不太容易作扩展等问题。nosql则解决了这样的问题
nosql具备如下特色:mysql
mongodb数据结构有以下几种:web
help() #获取帮助信息 show dbs #列出当前数据库 show collections #列出指定库中数据表 show users #列出用户 show profile #列出当前数据库全部性能参数 show logs #列出日志 show log() #列出指定日志 db.stats() #列出数据库状态 db.version() #列出数据库版本 db.serverStatus() #列出数据库所在服务器状态信息 db.getcollectionNames() #列出当前库全部collection db.collection.stats() #列出当前collection的信息
> use db_name #切换和建立数据库,mongodb不须要手动建立数据库,执行此命令其实已经建立数据库了,可是此时show dbs不会显示,只有往db中插入数据才会显示 > db.students.find() #列出全部document > db.students.find({age:{$lt: 1}}) #列出age小于1的全部数据 > db.students.find({age:{$lt: 1}}).count() #统计全部age小于1的数据个数 > db.students.find({age:{$lt:9}}).limit(3) #仅显示3条age小于9的数据 > db.students.find({age:{$lt:9}}).skip(3) #显示age小于9的数据,跳过前三条 > db.students.findOne({age:{$lt:9}}) #仅显示一条age小于9的数据 > db.students.find({age:{$in:[10,20]}}) #显示年龄在10到20中间的数据 > db.students.find({$or:[{name:'student15'},{age:10}]}) #查找name为student15或者age为10的用户 > db.students.find({$and:[{name:'student15'},{age:10}]}) #查找name为student15而且age为10的用户 > db.students.find({class:{$exists:true}}) 查询存在class字段的文档 > db.studnets.update({name:"tom"},{$set:{age:21}}}) #修改tom的age为21
find操做支持以下高级用法:sql
$type:返回指定字段类型为指定类型的文档,语法格式{field:{$type:<BSON type}};1 Double(双精度),2 String,3 Object(对象),Array,Binary data,Undefined,Boolean,Date,Null,Regular Expression,JavaScripy,TimeStampmongodb
注意:每一种数据类型都有一种数字来表示此类型shell
update经常使用操做:数据库
删除经常使用操做:json
db.mycoll.remove(<query>,<justOne>) justOne指定要删除的个数 db.mycoll.remove({age:21}) 删除年龄为21的文档 db.mycoll.drop() 删除当前指定coll db.dropDatabase() 删除库,须要先切换到库中
mongodb支持的索引类型:服务器
hash索引:只适用于精确查找,hash索引不论数据多少,查询速度都是一致的数据结构
注意:按照范围查询使用的是树状索引并发
db.students.ensureIndex({name:1}) #在name上建立升序索引,1表示升序索引,通常索引名即为字段名,能够经过name来额外指定索引名 db.students.getIndexes() #获取在students上的全部索引 db.students.dropIndexes() #删除全部索引 db.students.dropIndex(Index_name) #删除指定名字索引 db.reIndex() #重建索引 db.students.find(name:"student5000").explain() #显示语句的执行过程
索引经常使用操做:
sparse:true:建立稀疏索引
注意:
稀疏索引:多个字段取值共用一个索引项,好比1到5岁的人指向一个索引。索引体积小,可是可能须要作二次查找
稠密索引:每个字段取值都有一个单独的索引项
经常使用服务器选项: