• mongodb基本操作


    一、MongoDB特点

    1. 模式自由 :可以把不同结构的文档存储在同一个数据库里
    2. 面向集合的存储:适合存储 JSON风格文件的形式
    3. 完整的索引支持:对任何属性可索引
    4. 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
    5. 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
    6. 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
    7. 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
    8. 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
    9. Mongodb 将数据存储为一个文档,数据结构由(key —> value)键值对组成
    10. MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),类似于JSON对象

    二、操作mongodb数据库

      1、创建数据库

        语法: use 数据库名

        注意:如果数据库不存在则创建数据库,否则切换到指定数据库。

           如果新创建的数据库不在列表内,要显示它,需要插入一些数据

      2、查看所有数据:

        show dbs

      3、查看当前正在使用的数据库

        a、db

        b、db.getName()

      4、查看当前数据库信息

        db.stats()

      5、断开连接

        exit

      6、删除数据库

        db.dropDatabase()

    三、集合操作

      1、创建集合 

        db.createCollection(name,options)

    参数 类型 描述
    Name String 要创建的集合的名称
    Options Document 用于指定集合的配置

      2、查看当前数据库下有哪些集合

        show collections

      3、删除集合

        db.集合名称.drop()

      3、文档插入

        db.集合名称.insert([文档1,...})

        插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

      4、文档更新

    db.集合名称.update(
       <query>,   
       <update>,
       {
        upset: <boolean>,    
        multi: <boolean>,
           writeConcern: <boolean>  //抛出异常的级别,一般不写
      }
    )       
    • 参数query: 查询条件,类似sql语句update中where部分
    • 参数update: 可选,更新操作符,($set, $inc)等,$set直接更新,$inc在原有的基础上累加后更新,类似sql语句update中set部分
    • 参数multi: 可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

      5、文档查找

    1.方法find():查询
      db.集合名称.find({<key:1>,})  // key:要显示的字段,1表示显示
    2.方法findOne():查询,只返回第一个
      db.集合名称.findOne({条件文档})
    3.方法pretty():将结果格式化
      db.集合名称.find({条件文档}).pretty()

      6、查询条件操作符

    • 等于,默认是等于判断,没有运算符
    • 小于$lt
    • 小于或等于$lte
    • 大于$gt
    • 大于或等于$gte
    • 不等于$ne

      7、范围运算符

        使用‘$in’,'$nin' 判断是否在某个范围内

      8、逻辑运算符

        a、AND条件

          db.集合名.find({条件1,条件2, ... })

        b、OR条件

          db.集合名.find({$or[{条件1},{条件2} ,.. .}])

        c、AND和OR联合使用

    db.集合名.find{
        {
             条件1,
             条件2,
             $or:[{条件3},{条件4}]
        }     
    }        

      9、支持正则表达式

        使用 / / 或 $regex 编写正则表达式

    例如:查询姓黄的学生
    db.stu.find({name:/^黄/})
    db.stu.find({name:{$regex:'^黄'}}})

      10、limit 、skip

    a、limit(): 用于读取指定数量的文档
      语法:db.集合名称.find().limit(NUMBER)
    
    b、skip():用于跳过指定数量的文档
      语法:db.集合名称.find().skip(NUMBER)
    
    c、limit() 与 skip() 联合使用
       通常用这种方法实现分页功能
       例如:db.stu.find().skip(3).limit(4)

      11、排序

    语法:db.集合名称.find().sort({字段:1,...})
    •  参数1为升序排列
    •  参数-1为降序排列

      12、文档删除

    db.集合名称.remove(
       <query>,
       {
         justOne: <boolean>
       }
    )
    • 参数query:可选,删除的文档的条件
    • 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

    四、文档操作

    五、SQL与MongoDB之间数据对比

    SQL术语/概念

    MongoDB术语/概念

    解释/说明

    database

    database

    数据库

    table

    collection

    数据库表/集合

    row

    document

    数据记录行/文档

    column

    field

    数据字段/域

    index

    index

    索引

    table joins

    表连接,MongoDB不支持

    primary key

    primary key

    主键,MongoDB自动将_id字段设置为主键

  • 相关阅读:
    第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解
    PyQt学习随笔:QTableWidget的信号signal简介
    PyQt学习随笔:QTableWidget水平表头horizontalHeader、竖直表头verticalHeader的相关操作方法
    PyQt学习随笔:QTableWidget的selectedRanges、setRangeSelected访问选中矩形范围的方法
    PyQt学习随笔:QTableWidget的visualRow、visualColumn、logicalRow、logicalColumn(可见行、逻辑行、可见列、逻辑列)相关概念及方法探究
    PyQt(Python+Qt)学习随笔:QTableWidget的获取指定位置项的item和itemAt方法
    PyQt(Python+Qt)学习随笔:QTableWidget的findItems和selectedItems搜索项和访问选中项方法
    PyQt(Python+Qt)学习随笔:QTableWidget的takeItem和sortItems方法
    PyQt(Python+Qt)学习随笔:QTableWidget项编辑方法editItem、openPersistentEditor
    PyQt(Python+Qt)学习随笔:QTableWidget设置项的setItem方法
  • 原文地址:https://www.cnblogs.com/Mint-diary/p/9607345.html
Copyright © 2020-2023  润新知