zoukankan      html  css  js  c++  java
  • Mongodb--基础(连接,增删改查,数据类型)

     mongodb 日常启动命令

    mongod --dbpath D:datadb

     一.启动,连接

    mongodb是一个非关系型数据库

    1. 启动MongoDB服务:

      安装时我并没有将mongodb服务加载进windows的servcies中,所以每次启动需要的命令是开头的日常启动命令, 注意,默认的数据库存放路径时 C:datadb , 由于不想让c盘空间占用,所以就指定到了d盘下的路径,但是这个目录一定要创建好之后才能开启mongod服务, 否则会报错(需要自己创建这个目录其实表示你对mongodb在本机使用的认可)

    mongod  选项  --dbpath 数据库存放路径

    windows服务启动命令

    mongodb   --install 安装windows服务
              --remove 卸载windows服务

    2.客户端的连接

       1.使用cmd窗口

       2.使用NoSQLBooster for MongoDB软件进行连接

    二.操作数据库

    数据库操作:

        show databases    查看本地磁盘数据库
        use dbname        切换当前使用的数据库
        db                查看当前使用的数据库
        show tables        查看当前数据库存放在磁盘上的数据表
    
        use 不存在的数据库  创建了数据库  当前创建的数据库没有存放在磁盘中
        db.tablename 不存在的表名 创建数据表  - 当前数据表没有存放在磁盘中
                                           - 如果表里有数据的话,就在磁盘上了        

    数据表操作:

    增删改查操作

      MongoDB的操作概念 

    • 使用了不存在的对象即创建该对象
    • 不限制数据结构

    1.增加数据:

    db.tablename.insert({"key":"value"})

    官方推荐写法

    db.users.insertOne({})    # 插入一条数据
    db.users.insertMany([{},{},{}])  # 插入多条数据

     

    2.查询数据

    db.tablename.find() 查询符合条件的所有数据
    
    例:db.tablename.find({"name":"robertx"})

    推荐写法

    db.tablename.findOne() 查询符合条件的第一条数据

    3.修改数据:

    db.tablename.update({"name":"tom"},{"$set":{"age":84}}) # 只修改符合条件的一条数据
    # $set - set修改器 强制替换覆盖

    官方推荐写法

    db.tablename.updateOne() 更新符合条件的第一条数据
    db.tablename.updateMany() 更新符合条件的所有数据

    array+Object : db.users.updateOne({"cours.name":"xxx"},{$set:{"cours.$.score":"000"}})

    4.删除数据:

    db.tablename.remove({})
    
    例:db.tablename.remove({age:73}) 删除所有age==73的数据

    官方推荐写法

    db.users.deleteOne() 删除符合条件的第一条数据
    db.users.deleteMany() 删除符合条件的所有数据

    三.数据类型

        ObjectId :Documents 自动生成的 _id
        _id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
        String: 字符串,必须是utf-8
        Boolean:布尔值,true 或者false (在Python中 True False 首字母大写)
        Integer:整数 (Int32 Int64 一般我们用Int32)
        Double:浮点数 (没有float类型,所有小数都是Double)
        Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
        Object:深度<=4 (就是Python中的字典,这个数据类型就是字典)
        Null:空数据类型 , 一个特殊的概念,None Null
        Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
        Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以表示一切时间类型)

    四.数学比较符

        $lt   小于
        $gt   大于
        $lte  小于等于
        $gte  大于等于
        $ne   不等于
        $eq or : 等于
        
        $in {hobby:{$in:["tom","bob"]}} 相同字段 or
        $or {$or:[{hobby:"tom"},{age:84}]} 不同字段间的 or
        $all {hobby:{$all:["tom","bob"]}} 查询子集
        $and or , {$and:[{hobby:"tom"},{age:84}]} 并列条件 之 $and
        {{hobby:"tom",age:84}} 并列条件 之 ,

    五.查询关键字

        Array数据类型会自动遍历
        $in 或者等于相同字段 db.users.find({age:{$in:[19,109]}})
        $or 或者等于不同字段 db.users.find({$or:[{age:19},{age:84}]})
        $and or 逗号 并列条件
        
        $all - Array 数据类型 子集查询 db.users.find({hobby:{$all: ["TOM"]}})

    六.$字符特殊用法:

    存储符合条件的元素下标索引,用于修改字段
    db.tablename.updateOne({hobby:"tom"},{$set:{"hobby.$":"美食"}})

    七.修改器

        $set - set修改器 强制替换覆盖
        $unset - 强制删除字段
        $inc - 引用增加 
    
        array操作:
        $push append 在array中追加  db.users.update({name:"Tom"},{$push:{hobby:"唱歌"}})
        $pushAll extend 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["唱歌","跳舞","欧林斯"]}})
        $pull remove 在array中删除一个元素 db.users.update({name:"Tom"},{$pull: {hobby:"跳舞"}})
        $pullAll  在array中删除一堆元素 db.users.update({name:"Tom"},{$pullAll: {hobby:["美食","音乐"]}})
        $pop pop 删除第一个 -1 或最后一个 1 的值 db.users.update({name:"Tom"},{$pop: {hobby:1}})

     另一种说法

        $set 强制修改 {$set:{name:123}} 强制将name字段的值修改为123 可以创建字段
        $unset 删除字段 {$unset:{name:1}} 强制删除name字段
        $inc 引用增加 {$inc:{age:1}} 对age字段引用增加 原有数值基础上增加 1
        Array
        $push 相当于列表数据类型的append 追加数据 {$push:{array:"666"}}
        $pull 相当于列表数据类型的remove 删除Item {$pull:{array:"666"}}
        $pop  相当于列表数据类型的pop(0/-1) 只能删除第一个和最后一个 {$pop:{array:1/-1}}
              1 : 删除最后一个
              -1:删除第一个
              
        $pushAll extend 遍历列表循环追加数据 {$pushAll:{array:["666",777,888]}}
        $pullAll 遍历列表循环删除数据 {$pullAll:{array:["666",777,888]}}

    八.skip sort  limit

      当sort,skip,limit组合使用时,它们的顺序为先排序 再跳过 最后筛选

      sort排序

        db.users.find({}).sort({ age:1 })
        db.users.find({}).sort({ age:1 , birthday:-1 })

      limit(1) 选取条目

        db.users.find({}).limit(3000)

      skip(1) 跳过

        db.users.find({}).skip(1)

      跳过选取

        db.users.find({}).skip(2).limit(3)

      分页:(组合使用可实现分页功能)

        (page-1)*num # 当前页展示的数据
        db.users.find({}).limit(num).skip((page-1)*num)

    九.与mysql概念的对比

  • 相关阅读:
    事务
    XML小总结
    java中array,arrayList,iterator;
    MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
    RHCE7认证学习笔记17——KickStart安装系统
    CentOS中安装MySQL数据库
    centos下搭建svn服务器端/客户端
    AWS安装CDH5.3-CentOS6.4中关键操作步骤
    AWS安装CDH5.3-CentOS6.4
    [转]Servlet 工作原理解析
  • 原文地址:https://www.cnblogs.com/robertx/p/10726295.html
Copyright © 2011-2022 走看看