zoukankan      html  css  js  c++  java
  • MongoDB初探-基本语句和数据结构

    MySQL:

    1   金老板 18  15512351234
    2   小哪吒 20  15312341234
    3   Alex    73  15512341234
    

    MongoDB:

    {
        {
            id : 1,
            name:金老板,
            age : 18,
            phone:15512351234
        },
        {
            ids : 1,
            names:金老板,
            ages : 18,
            phones:15512351234
        }
    }
    

    1.MongoDB的启动 CMD :

    mongod --dbpath="D:/data/db/"
    客户端 : mongo

    2.指令

    • show databases - 显示数据库(在磁盘中存储的数据库)
    • db - 显示当前使用的数据库
    • use db_name - 切换使用中的数据库,如果数据库不存在,在内存中创建一个数据库空间大小是0
    • db.user - 在当前数据库的内存中创建一个数据表空间 大小是0
    • show tables - 显示当前数据库中的数据表 (存放在磁盘中的)

    在MongoDB - 使用了不存在的对象,即创建该对象

    3.MongoDB的增删改查:

    增加数据:

    单个信息增加
    不推荐写法

    db.user_info.insert({
        "name":"alexdsb",
        "age":73
    }) 
    

    多条增加:
    不推荐写法

    db.user_info.insert([{"name":1},{"name":3},{"name":2}])
    

    官方推荐写法:

    db.user_info.insertOne({})
    db.user_info.insertMany([{},{}])
    

    查找数据:

    db.user_info.find({})
    db.user_info.find({"age":73})
    db.user_info.findOne({"age":73})
    

    修改数据:

    官方不推荐 // 修改器:$set

    db.user_info.update({"age":73}, {$set:{"name":"JWB"}})
    

    官方推荐

    db.user_info.updateOne({"age":73}, {$set:{"name":"JWB"}})
    db.user_info.updateMany({"age":73}, {$set:{"name":"JWB"}})
    

    删除数据:

    官方不推荐

    db.user_info.remove({name:111})
    

    官方推荐

    db.user_info.deleteOne({name:1})
    db.user_info.deleteMany({name:1})
    

    _id = ObjectID 关系型数据库中的 自增ID 以数据库为核心的自增
    表为核心的自增ID

    user - book
    1       1
    2       2
    3       3
    

    数据库为核心的自增ID ObjectID宇宙唯一的

    user - book - auth
    1       4       7
    2       5       8
    3       6       9
    10      11      12
    13      14      15
    

    4.数据类型:

    • ObjectID 自动创建的 一个字符串 Documents 自生成的 _id
    • String 字符串类型 不需要限定长度的
    • Boolean:布尔值,true 或者false
    • Double:浮点数 (没有float类型,所有小数都是Double) !float是不存在的
    • Integer:整型 数据类型
    • Arrays:[] 数组类型 在python中就是个列表
    • Object:{} 对象类型 在python中就是个字典 在其他语言中叫 Object
    • Null == None
    • 时间数据类型 - Timestamp - Date

    5.MongoDB与关系型数据库概念的变差:

    关系型数据库 MongoDB
    database database
    table Collections
    row Documents
    Colunm数据列 Field

    6.MongoDB修改器

    1. $set: 强制修改
      {$set:{"name":1}} == (dict["key"] = value)
    2. $unset: 删除Key 删除Field (del dict["key"])
      db.school.updateOne({"school_name":"OldBoy"},{$unset:{"student_list":1}})

    3. $inc 引用增加
      db.user_info.updateMany({},{$inc:{"age":1}})

    4. 针对Array的操作

      1. $push - 在Array中增加一条数据

        db.school.updateOne({"class_name":"S16"},{$push: {student_list:{"name":"JSJ","age":25,"gender":"Null"}}})
        

        $pushAll 在Array中添加多条数据:

        db.school.updateOne({"type":"list"},{$pushAll:{"num_list":["a","b","c"]}})
        
      2. $pull => [].remove - 在Array中删除符合条件的元素

        db.school.updateOne({"type":"list"},{$pull:{"num_list":2}})         db.school.updateOne({"school_name":"OldBoy"},{$pull:{"student_list":{"name":"JSJ"}}})
        

        $pullAll - 在Array中删除所有符合条件的元素

        db.school.updateOne({"type":"list"},{$pullAll:{"num_list":[1,2,3]}})
        
      3. $pop => [].pop() - 删除Array中的第一条或最后一条

        db.school.updateOne({"student_list.name":"JSJ"},{$pop: {"student_list":-1}}) -1:第一个
        db.school.updateOne({"student_list.name":"JSJ"},{$pop: {"student_list":1}}) 1: 最后一个
        

    7.$ 字符

    存储符合条件Array中元素的下标索引

    8.针对Object的更新操作

    db.school.updateOne({"school_name":"OldBoy"},{$set:{"student.age":84}})

    db.school.updateOne({"school_name":"OldBoy"},{$inc:{"student.age":1}})

    9.$数学比较符

    $lt <
    $gt >
    $lte <=
    $gte >=
    $eq == db.school.find({"age":{"$eq":3}})

    $ne != db.school.find({"age":{"$ne":3}})

    10.条件分隔:

    and :
    db.school.find({"class_name":"S16","school_name":"OldBoy"})
    db.school.find({$and: [{"school_name":"OldBoy"},{"class_name":"S16"}]})

    or :
    db.school.find({$or:[{"school_name":"OldBoy"},{"class_name":"S16"}]}) 不同字段的or

    in :
    db.school.find({"school_name":{"$in":["OldBoy","OldBoySZ"]}}) 相同字段的or

    all :
    db.school.find({"userlist":{$all:[4,3,2]}}) 子集查询

    11.limit sort skip

    // limit 选取
    db.school.find({}).limit(5)
    
    // skip 跳过
    db.school.find({}).skip(5)
    
    // sort 排序
    db.school.find({}).sort({ age:-1 })
    db.school.find({}).sort({ age:1 })
    
    
    // 跳过 选取
    db.school.find({}).skip(5).limit(5)
    db.school.find({}).limit(5).skip(5)
    
    // 排序 跳过 选取
    db.school.find({}).limit(5).skip(5).sort({ age:-1 })
    
    // 分页 每页3条
    // 第一页
    db.school.find({}).limit(3).skip(0).sort({ _id:1 })  // (page - 1) * 3
    // 第二页
    db.school.find({}).limit(3).skip(3).sort({ _id:1 })  // (page - 1) * 3
    // 第三页
    db.school.find({}).limit(3).skip(6).sort({ _id:1 })  // (page - 1) * 3
    

    12.pymongo - 使用python操作MongoDB

  • 相关阅读:
    SVN
    jenkins可视化
    Tomcat
    防火墙
    keepalived
    MHA高可用
    http
    inotifywait
    DNS
    nginx
  • 原文地址:https://www.cnblogs.com/russellyoung/p/MongoDB-chu-tan.html
Copyright © 2011-2022 走看看