zoukankan      html  css  js  c++  java
  • MongoDB之增删改查

    简介

    MongoDB是NoSQL非关系型,文件型数据库
    

    数据存储

    Mysql:
          id      name        age       sp               wq
          1      孙悟空      99999      null            定海神针
          2      沙悟净      99998      和尚同款项链      null
    Mongodb:
    {
          id:1,
          name:孙悟空,
          age:99999,
          wq:定海神针,
          ts:金箍,
          fs:虎皮裙,红丝袜,长筒靴
          hobby:['铁扇公主','紫霞','晶晶']
          skill:[
                {
                      name:'火眼金睛',
                      content:'透视',
                },{
                      name:'变大小',
                      content:'变~~~~'
                }
          ]
    },
    {
          id:2,
          name:沙悟净,
          age:99998,
          sp:和尚同款项链
    }
    
    mongodb存储的就是json数据
    

    相关指令

    终端输入>>>>mongo   #进入mangodb数据库
    show databases;  # 显示所有数据库
    use databasename # 使用并切换到指定的数据库
    db   #查看当前使用的数据库
    show tables # 显示当前数据库下的所有表
    use 不存在的数据库名   # 创建数据库
    db.不存在的表名  # 创建表
    # 上面新创建数据库和创建表是看不到的,原因是在内存中创建的,但是当你插入数据后就能在本地查看到。
    db.tablename.insert({"键":"值"})  # 插入数据
    db.tablename.find({查询条件})  # 查询所有符合条件的数据
    db.tablename.findOne({查询条件}) # 查询所有符合条件的第一条数据 返回json数据
    db.tablename.update({内置条件},{修改语句})  #修改数据  所有mongodb的修改全部基于 修改器  如果符合条件的数据有多条也只会修改第一条
    $set  #强制将某字段值修改
    db.tablename.update({age:66},{$set:{age:77}}) # 如果该字段不存在即创建该字段并赋值
    $unset # 删除字段
    db.tablename.update({name:"孙悟空"},{$unset:{age:1}})  # 必须为1
    $inc # 引用增加 先引用原有数据,在原有数据基础上增加
    db.tablename.update({name:"孙悟空"},{$inc:{age:10}})
    $push   # 针对Array List操作 相当于append
    db.user.update({name:"孙悟空", {$push:{hobby:7}}})  #在hobby中添加7
    $pushAll  # 相当于extends
    db.user.update({name:"孙悟空", {$pushAll:{hobby:[8,9,10]}}}) 
    $pull  #相当于remove()   循环遍历删除
    db.user.update({name:"孙悟空", {$pull:{hobby:7}}})
    $pullAll #删除多个  循环遍历删除
    db.user.update({name:"孙悟空", {$pullAll:{hobby:[8,9,10]}}}) 
    $pop  # 约等于pop()  因为$pop只能删除第一个和最后一个,默认是最后一个  负数从上往下删(第一个数据)  正数从下往上删(最后一个)
    db.tablename.remove({查询条件})  #删除指定数据,不写条件则删除所有
    $  #数学比较符
    $gt  #大于
    $gte #大于等于
    $lt  #小于
    $lte #小于等于
    $eq  #等于
    $ne  #不等于
    db.tablename.find({age:{$gt:70}})  # 年龄大于70的
    



    官方推荐写法 增删改查 3.2以后

    # 增
    db.user.insertOne({})  # 新增一条数据
    db.user.insertMany([{},{}])  #新增多条
    # 查询
    db.user.findOne({}) #查询符号条件的第一条数据
    # 改
    db.user.updateOne({},{}) # 修改符合条件的第一条数据
    db.user.updateMany({},{}) #修改符合条件的所有数据
    修改中$关键字的用法   name:"孙悟空",hobby:['抽烟','喝酒','烫头']  将hobby中的喝酒改为飙车
    $是用来存储符合当前Array条件元素的下标索引
    db.user.updateOne({name:'孙悟空',hobby:'喝酒'},{$set:{"hobby.$":"飙车"}})
    # {student:{name:"java",content:"基础教学"}} 将字典中的name改为python
    db.user.updateOne({name:'孙悟空'},{$set:{"student.name":"python"}})
    # [{'name':"py"},{'name':"MPy"},{'name':"开车"}] 将列表中字典name对应的值为MPy的改为anyway
    db.user.updateOne({name:'孙悟空',"student.name":'MPy'},{$set:{"student.$.name":"anyway"}})
    # 删
    db.user.deleteOne({})  # 删除符合条件的第一条
    db.user.deleteMany({}) # 删除所有符合条件的数据
    

    数据类型

    Object  ID :Documents 自生成的 _id
    
    String: 字符串,必须是utf-8
    
    Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
    
    Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
    
    Double:浮点数 (没有float类型,所有小数都是Double)
    
    Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
    
    Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
    
    Null:空数据类型 , 一个特殊的概念,None Null
    
    Timestamp:时间戳
    
    Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
    

    可视化操作工具nosqlbooster for mongodb的使用




    选取,跳过,排序

    # 排序
    db.user.find({}).sort({age:1})  #以age字段进行排序,1表示正序,-1表示倒序
    # 跳过
    db.user.find({}).skip(2)  # 跳过前两条后查询
    # 选取
    db.user.find({}).limit(5) # 选取5条
    # 重点
    当上面三个关键全部出现在一条语句中时,会按照先排序再跳过再选取的逻辑。无论哪个怎么打乱顺序都是会按照这个逻辑查询查询出数据。
    可用于分页
    
    
  • 相关阅读:
    学JAVA第十一天,属性与方法
    学JAVA第十天,一维数组及二维数组的使用。
    限制input[type=number]的输入位数策略整理
    淘宝NPM源的使用
    webpack之loader实践
    5月份开发问题整理
    前后端分离思考
    js 导航栏多项点击显示下拉菜单代码
    阵容首发
    jquery中的ajax请求到php(学生笔记)
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/14050903.html
Copyright © 2011-2022 走看看