前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb初级入门

mongodb初级入门

作者头像
废江_小江
发布2022-09-05 14:22:00
6900
发布2022-09-05 14:22:00
举报
文章被收录于专栏:总栏目总栏目

基础

启动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初级入门

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础
    • 和mysql对比的优缺点
      • 数据类型
      • 基本命令
        • 数据库基本命令
          • 文档基本命令
          • 高级命令
            • 分页查询
            • 练习
            • 聚合查询
              • mathc和group的用法
                • 其他函数
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档