Mongodb(一)

安装(Linux系统下)

  • 导入软件源的公钥:
    • sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv EA312927
  • 创建软件源:

  • 更新并安装软件:

    • sudo apt-get update
    • sudo apt-get install -y mongodb-org
    • sudo apt-get install mongodb
  • 启动:

    • sudo service mongodb start

专有名词

  • database:数据库
  • collection:数据库表/集合
  • document:数据记录行/文档
  • field:数据字段/域
  • index:索引
  • primary_key:MongoDB自动将_id字段设置为主键

三元素

  • 数据库
    • 一个集合的物理容器,一个数据库可以包含多个文档
  • 集合
    • 类似关系型数据库(SQL)中的表,储存多个文档,且结构不固定
  • 文档
    • 一个对象,由键值对构成,是json的扩展形式
      demo:{“name”:”小明”,”gender”:”男”}
  • mongodb菜鸟学习教程

服务器与客户端常用命令

  • 服务器
    • 启动:sudo service mongod start
    • 停止:sudo service mongod stop
    • 重启:sudo service mongod restart
  • 客户端
    • mongo

基本操作

数据库

  • 查看当前数据库:db
  • 查看所有数据库:show dbs
  • 切换数据库:use 数据库名
    • 若没有,则自动创建
  • 删除当前指向数据库:db.dropDatabase()

集合

增删改
  • 创建:db.createCollection(集合名)
    • 可以不创建,插入时自动创建
    • 默认不限制集合大小
    • 限制:db.createCollection(“name”, {capped:true, size:100})
      • 集合名为name,限制大小,限制后,达到大小后,会覆盖
  • 查看:show collections
  • 删除:db.集合名.drop()
  • 插入:db.集合名称.insert(document)
  • 更新:db.集合名称.update({选择更新值},{更新为},{multi:true})
    • multi:默认为false,只更新匹配的一条,若为true,更新匹配多条
    • multi:修改多条,只对于’$’有效
    • 指定属性更新,通过’$set’
db.practice.update({"name":"小明"},{$set:{"name":"小红"}},{multi:true})
  • 保存:db.集合名称.save(document)
  • 删除
    • 指定删除:db.集合名称.remove(<删除条件>,{justone:})
      • justone:默认为false,删除多条,设置为true,删除一条
    • 全部删除:db.集合名称.remove()
查询
  • 基本查询
    • db.集合名.find(条件文档)
    • 查找一条:db.集合名.findOne(条件文档)
    • 格式化输入:db.集合名.find().pretty()
  • 比较查询
    • 比较运算符
      • 大于:$gt
      • 小于:$lt
      • 大于等于:$gte
      • 不等于:$ne
    • 逻辑运算符
      • 与:默认为与
      • 逻辑或:$or
    • 范围运算符
      • $in
      • $nin
    • 自定义查询
      • where后跟js代码,写明查询条件
    • 支持正则
      • 使用//或$regex编写正则表达式
demo(查询年龄大于30的人):db.staff.find({age:{$gt:30}})

查询年龄大于30且性别为男:db.staff.find({age:{$gt:30}},{gender:true})

查询年龄大于30或性别为女:db.staff.find({$or[{age:{$gt:30}},{gender:true}]})

查询年龄在20-40的员工:db.staff.find({age:{$in:[20,40]}})

查询姓王的员工:db.staff.find({name:{$regex:'^黄'}})
  • 限制与跳跃
    • limit():读取指定数量文档
    • skip():用于跳过指定数量文档
查询第58条数据:db.staff.find().limit(4).skip(5)
  • 投影:设置选择字段
    • 1为显示,0为不显示
只显示名字和年龄:db.staff.find({},{"name":1,"age":1})
  • 排序:sort()
    • 1:升序
    • -1:降序:从大到小
根据性别降序、再根据年龄升序:db.staff.sort({gender:-1, age:1})
  • 统计个数:count()
    • db.集合名称.find(条件).count()或db.集合名.count({条件})
  • 消除重复
    • db.集合名.distinct(“去重字段”,{条件})
查找员工年龄大于18,来自哪些省份:db.stu.distinct('hometown',{age:{$gt:18}})
  • 聚合(aggregate)
    • 用于计算数据
    • 语法:db.集合名.aggregate(管道:{表达式})
  • 常用管道:
    • $group:将集合中的文档分组,可用于统计结果
    • $match:过滤数据,只输出符合条件的文档
    • $project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果
    • $sort:将输入文档排序后输出
    • $limit:限制聚合管道返回的文档数
    • $skip:跳过指定数量的文档,并返回余下的文档
    • $unwind:将数组类型的字段进行拆分
  • 常用表达式
    • sum sum:1 表示以一倍计数
    • $avg:计算平均值
    • $min:获取最小值
    • $max:获取最大值
    • $push:在结果文档中插入值到一个数组中
    • $first:根据资源文档的排序获取第一个文档数据
    • $last:根据资源文档的排序获取最后一个文档数据
      聚合方法教程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值