• MongoDB


    简介

    • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    • 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中最像关系型数据库的一种,是功能最丰富的非关系型数据库。

    安装及测试

    • 安装:

      • 双击安装包,然后一路NEXT即可完成安装

      • 将安装目录添加系统环境变量PATH下

      • 创建目录

          c:datadb              # 存放数据
        c:datalog # 存放日志
    • 启动连接

      • 启动服务:mongod --dbpath c:datadb

      • 客户端连接:mongo,默认地址:127.0.0.1:27017

    • 将MongoDB添加到windows系统服务(需要以管理员身份运行终端)

      • 添加服务:mongod --dbpath "c:datadb" --logpath "c:datalogMongoDB.log" --install --serviceName "MongoDB"

      • 移除服务:mongod --dbpath "c:datadb" --logpath "c:datalogMongoDB.log" --remove --serviceName "MongoDB"

      • 服务控制:net start|stop MongoDB

    MySQL与MongoDB对比

    • 相关概念

      MySQLMongoDB
      database(数据库) db(数据库)
      table(数据表) collection(集合)
      row(行) document(文档)
      column(列) field(域/字段)

    db操作

    • 查看所有数据库:show dbs,若数据库中没有数据,则不会显示出来

    • 查看当前数据库:dbdb.getName()

    • 创建并切换数据库:use python1806

      • 数据库存在直接切换,不存在创建后再切换

      • 当数据库中没有数据时,show dbs不会显示

    • 删除当前数据库:db.dropDatabase()

    • 查看帮助:help

    • 退出:exitquit()

    collection操作

    • 查看当前数据库下的所有集合:show collections

    • 创建集合:

      • 单纯创建:db.createCollections('user'),会创建一个空集合

      • 按需创建:db.stu.insert({name:'shuorui', age:30}),直接操作不存在的集合,系统会自动创建

    • 删除集合:db.stu.drop()

    document操作

    • 增加文档:

      • insert

        # 插入一条数据
      db.user.insert({name:'jiwei', age:29, height:175, isDelete:0})
      # 插入多条数据
      db.user.insert([{name:'zhihui',age:18, height:168, isDelete:0},{name:'minghui', age:28, height: 173, isDelete:0}])
      • save

        # 保存的数据没有_id字段,会插入一个新的文档
      db.user.save({name:'wenke', age:40, height:178, isDelete:0})
      # 保存的数据有_id字段,会修改对应的数据
      db.user.save({_id:ObjectId("5be3ecf105c088a265a0b578"), name:'wenke',age:30, height: 178, isDelete:0})
    • 更新文档

      • save

        # 保存的数据有_id字段,会修改对应的数据,就相当于更新操作
      db.user.save({_id:ObjectId("5be3ecf105c088a265a0b578"), name:'wenke',age:25, height: 178, isDelete:0})
      • update:db.集合.update(query, update, {upsert:<boolean>, multi:<boolean>})

        • query:表示查询条件

        • update:表示更新设置的内容

          • $set:表示设置

          • $inc:表示增加

        • upsert:更新的查询结果不存在,是否作为新数据插入,默认为false

        • multi:符合条件的数据是否全部更新;true表示全部更新,false表示更新一条,默认为false

        db.user.update({age: 25}, {$set:{age:26}})                      # 只会更新一条
      db.user.update({height:175}, {$inc:{height: 1}}, {multi: true}) # 会更新全部
    • 删除文档

      • remove:db.集合.remove(query,{justOne:<boolean>})

        db.user.remove({height: 176})                   # 默认删除所有数据
      db.user.remove({isDelete:0}, {justOne:true}) # 只会删除一条数据
      • delete:官方推荐

        db.user.deleteOne({isDelete: 0})        # 删除一条数据
      db.user.deleteMany({isDelete: 0}) # 删除所有数据
    • 查询文档

      • 格式:db.集合.find(query, {key1:0/1, key2:0/1, keyn:0/1})

        • query:查询条件

        • key:表示字段名

        • 第二个参数要么同时为1表示显示的字段,要么同时为0表示排除的字段

        db.user.find({},{name:1, age:1}).pretty()           # 只显示name和age
      db.user.find({},{name:0, age:0}).pretty() # 不显示name和age
      • pretty():格式化显示数据(类似于字典形式显示)

        db.user.find().pretty()
      • findOne

         db.user.findOne({isDelete:0})          # 只返回条数据

    ..

  • 相关阅读:
    课程安排及脉络
    面向对象 魔法方法 单例(五)
    练习项目:选课系统
    面向对象 多态 类方法 反射 (四)
    面向对象(三) 组合 封装
    面向对象编程(二)
    面向对象编程(一)
    python入门总复习
    模块(四)
    模块(三)
  • 原文地址:https://www.cnblogs.com/542684416-qq/p/9930226.html
Copyright © 2020-2023  润新知