基础
启动mongodb:在安装的mongodb的文件夹下的bin目录打开cmd输入mongo,即可启动mongodb,cmd窗口关闭或者按ctrl c即可退出mongodb
和mysql对比的优缺点
mongodb比mysql,高性能,高可用,高扩展。但唯一的缺点是对数据的事务的支持没有mysql强。因此,mmongodb适合存储那些海量数据并且经常读写的不太重要的数据。
数据类型
基本命令
数据库基本命令
代码语言:javascript复制use db //创建数据库
db.dropDatabase()//删除数据库(删除当前正在使用的数据库)
db.createCollection(name)//显示创建集合name
db.commit.insert()//隐式创建集合commit,当不存在时
db.commit.drop()//删除集合commit
show tables//显示当前数据库下的所有集合
文档基本命令
代码语言:javascript复制db.commit.insert(json)//插入一条json数据,数字默认为double类型,整形使用NumberInt()转换
db.commit.insertMany(json)//插入多条json数据
db.commit.find()//查询commit集合下的所有文档
db.commit.find({name:"张三"})//查询commit集合下的姓名为张三的所有文档
db.commit.findOne()//只返回一条数据
db.commit.find(json1,json2)//投影查询,json2中所有value的值写1
db.commit.find({},{name:1,age:1})//查询commit集合的所有文档,但文档只显示name和age数据
//修改分别局部和全局
//当json2写了全部的key全是全局,如果没写全会将json1查找的文档修改为json2,这种不好,用$set
db.commit.update(json1,json2)
db.commit.update(json1,{$set:json2}
db.commit.update({name:"老王"},{$set:{age:18}}//将name为老王的第一个文档的年龄改为18
db.commit.update(json1,{$set:json2},{multi:true})//修改所有的记录
//列值增长的修改
db.commit.update({name:"老王"},{$inc:{age:NumberInt(1)}})//将老王的年龄 1
db.commit.remove({name:"老王"})//删除名字为老王的文档
db.commit.remove{()}//清空集合
高级命令
分页查询
代码语言:javascript复制db.commit.count({name:"老王"})//查询叫老王的文档个个数
//分页查询使用skip和limit方法
//例如每页两条数据
db.commit.find().skip(0).limit(2)//第一页
db.commit.find().skip(2).limit(2)//第二页
db.commit.find().skip(4).limit(2)//第三页
//排序查询
db.commit.find().sort({age:1})//查询commit集合的所有文档,并且按年龄升序排序,降序使用-1
//正则查询
db.commit.find({field:/正则表达式/})//其中field是key值
db.commit.find({name:/王/})//查询commit集合中所有姓名中含有王的文档
db.commit.find({name:/^老/})//查询commit集合中所有姓名以老开头的文档
//比较查询
db.commit.find({"field":{$gt:value}})//查询field大于value
db.commit.find({id:{$gt:NumberInt(50)}})//查询id大于50的commit集合下的所有文档
$gt大于 $lt小于 $gte大于等于 $ne不等于
//包含查询,不包含使用$nin
db.commit.find({name:{$in:["老王","小王"]}})//查询commit集合中name为老王或者小王的文档
//条件连接查询$and ,相当于mysql里面的and
db.commit.find({$and:[json1],[json2],[json3]})
db.commit.find({$and:[name:"老王"],[age:18]})//在commit集合中查询一个18岁的老王
//$and表示与 $or表示或
练习
聚合查询
mongodb聚合查询中使用aggregate函数
代码语言:javascript复制$match //表示匹配,相当于sql里面的where
$group //表示分组,相当于sql里面的group by
$project //表示映射
$sort //排序
$limit , $ skip // 分页使用的不多说
$sample //随机返回文档
$concat//拼接
$substr//截取
$toLower//转为小写
$toUpper//转为大写
mathc和group的用法
代码语言:javascript复制//match格式
{"$match":{"字段","条件"}}
//group格式
{"$group":{"_id":"分组字段","新的字段名":聚合操作符}}
代码语言:javascript复制db.student_course.aggregate([{"$group":{"_id":"$CID","avg_score":{"$avg":"$SCORE"}}},{"$sort":{"CID":1}}])
看了例子也没啥好讲的,这里着重说下这个聚合操作符。看下mysql里面的:
分组查询的结果对mysql也就是select xx from中的xx,这里可以写根据分组的字段,如果写其他字段就得使用分组函数!为什么?比如,一个学生选课表,按学生姓名进行分组,当然你可以查学生姓名,这时返回给我们的就是一堆学生姓名。但是你想查这个学生的选课的这门课的成绩,肯定不行!你得使用AVG等等函数,查出来这个学生的所选的课的平均成绩!
其他函数
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:mongodb初级入门