• mongodb


    NoSQL - MongoDB文件型数据库
    文件型 - MongoDB

    User:
    [
    {id:1,name:"蔡文姬",age:16,gender:""},
    {id:2,name:"嫦娥",age:16,gender:""},
    {
    id:3,name:"孙悟空",age:16,gender:""},
    {id:"",name:123,age:"十六",gender:1,hobby:["篮球","于谦","羽毛球","双色球”]}
    ] 4 ""
    操作简单方便易懂 更加接近程序员操作 原生语法ORM
    因为是非关系型数据库,没有结构限制,扩展性很强

    关系型(拉里埃里森) - MySQL MSSQL(SQLServer微软,Windows) Sybase ORCAL(MySQL) DB2+AUX(IBM)
    MySQL MS - MySQL Ux
    User:
    ID name age gender hobby
    1 蔡文姬 16 女 null
    2 嫦娥 9999 女 null
    3 孙悟空 8888 男 null
    四    (不行)

    端口号

    Redis 6379
    MYSQL 3306
    MongoDB 27017

    1.安装 MongoDB
    配置环境变量 - Path :MongoDB/bin/mongod.exe
    CMD -
    mongod 启动命令
    Mongod  --dbpath    数据库存放路径(数据库存放路径必须存在)
    27017 MongoDB的默认端口
    mongo 开启客户端 默认连接地址是本机


    2.基本操作命令
    db -- 当前使用的数据库 查看名称,代指当前使用的数据库
    show databases -- 查看当前服务器磁盘上的所有数据库
    use dbname -- 切换当前使用的数据库 或者在内存中创建一个新的数据库 赋值给 db
    show tables -- 查看当前数据库中所有磁盘中的表
    db.tablename -- 使用当前数据库中的tablename表 在内存中创建表

    使用不存在的对象即创建该对象

    3.增删改查

    db.tablename.insert({name:"123"}) #在磁盘中写入数据{name:"123"}
    db.tablename.insert([{name:"123"},{name:"123"}]) #在磁盘中写入多条数据

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

    db.tablename.update({查询条件},{$修改器:{修改属性}})
    # 根据查询条件,修改符合条件的第一条数据
    修改器:认定当前修改的类型 $set设置类型修改器 强制修改某字段的值
    db.tablename.update({name:"345"},{$set:{name:789}})
    db.tablename.update({name:"123"},{$set:{gender:1}}) 符合不存在即创建的原则

    db.tablename.remove({查询条件}) # 删除所有符合条件的数据

    删除表格 - db.tablename.drop()
    删除库 - db.dropDatabase()

    4.MongoDB 数据类型
    MYSQL MongoDB 口语
    database database 数据库
    tables Collections 表儿
    column Field 列
    row Document 数据 一条数据


    ObjectID :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类型,时间戳可以秒杀一切时间类型)


    5.$数学比较符
    $lt 小于
    $lte 小于等于
    $gt 大于
    $gte 大于等于
    $eq : 等于
    $ne 不等于


    6.$修改器 + $ 字符特殊用法       ($)
    针对单个字段的操作:
    $set 修改某个字段的值 db.stu.update({age:20},{$set:{name:"绿绿",gender:1}})
    $unset 删除字段 db.stu.update({name:"小黑"},{ $unset: { newField:1 } })
    $inc 引用增加 先引用 后增加 db.stu.update({},{$inc:{age:-1}})
    针对 Array == list 操作
    $push == append()

    在Array的最后一个位置中增加数据
    db.stu.update({name:"小黑"},{ $push: { hoobys:"渣男" } })

    $pushAll == extend()
    db.stu.update({name:"小黑"},
    {$pushAll: {"hoobys":[1,2,3,5]}},
    )

    $pullAll
    db.stu.update({name:"小黑"},
    {$pullAll: {"hoobys":[1,2,3,5]}},
    )

    $pull == remove()
    删除Array中的指定元素
    db.stu.update({name:"小黑"},{ $pull: { hoobys:"渣男" } })

    $pop (=) pop()
    删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除
    db.stu.update({name:"小黑"},{ $pop: { hoobys:1 } })

    $ 字符特殊用法
    存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置
    例子:hobbys中等于5的元素改为 "五"
    先查询到hobbys中5的 位置(2) ,将位置存储在 $==(2) 字符中 然后根据$字符的位置(2)更改数据
    db.stu.update({"hoobys":5},{ $set: {"hoobys.$":"五"} })

    Object操作:
    db.stu.update({name:"小黑"},{ $set: { "hobby.烫头":"锡纸" } })

    Array + Object

    7.sort  skip limit

    pycharm  操作

    import json
    
    from bson import ObjectId
    from pymongo import MongoClient
    # from pymongo.cursor import Cursor
    
    m_client = MongoClient("127.0.0.1",27017)
    
    mdb = m_client["S20"]
    
    #
    # 增加数据时 res.inserted_id or inserted_ids
    # 都是 ObjectId不是字符串
    # res = mdb.user.insert_one({)
    # print(res.inserted_id)  # 5d2ed8f865d6b8f1c494ff78
    # res = mdb.user.insert_many([{"name":"小黑"},{"name":"小二B"}])
    # print(res.inserted_ids)
    
    # 查:
    # res = list(mdb.user.find({}))
    # print(res)
    # res_list = []
    #
    # for user in res:
    #     user["_id"] = str(user.get("_id"))
    #     res_list.append(user)
    #
    # res_json = json.dumps(res_list)
    # print(res_json)
    
    
    # res = list(mdb.user.find({}))
    # print(res)
    #
    # for index,user in enumerate(res):
    #     res[index]["_id"] = str(user.get("_id"))
    #
    # res_json = json.dumps(res)
    # print(res_json)
    
    
    # res = mdb.user.find_one({"name":"小黑"})
    # res = mdb.user.find_one({"_id":ObjectId("5d2ed96e38887b85450ed6d8")})
    # res["_id"] = str(res.get("_id"))
    # print(res,str(res.get("_id")))
    # res_json = json.dumps(res)
    # print(res_json)
    
    
    # 修改数据
    # res = mdb.user.update_one({"name":"小二B"},{"$set":{"name":"A_C"}})
    # print(res.modified_count)
    #
    # user = mdb.user.find_one({"name":"A_C"})
    # user["gender"] = 1
    # user["age"] = 99
    # user["name"] = "小二A_C"
    # user["hobby"] = ["choyan","hj","xzt"]
    #
    # res = mdb.user.update_one({"name":"A_C"},{"$set":user})
    
    # user = mdb.user.find_one({"name":"小二A_C"})
    # user["hobby"].append("洗头")
    # user["hobby"].remove("hj")
    #
    # mdb.user.update_one({"name":"小二A_C"},{"$set":{"hobby":user.get("hobby")}})
    
    
    # 删除
    # res = mdb.user.delete_one({})
    # print(res.deleted_count)
    
    import pymongo
    # 排序 + skip + limit
    # res = list(mdb.stu.find().sort("age",pymongo.DESCENDING))
    # res = list(mdb.stu.find().skip(2))
    # res = list(mdb.stu.find().limit(2))
    # for s in res:
    #     print(s)
    
    # 分页
    # res = list(mdb.stu.find().sort("age",pymongo.ASCENDING).limit(2).skip(4))
    # print(res)
  • 相关阅读:
    [IOI2014] 假期
    [SPOJ22343] Norma
    [APC001] D Forest
    [POI2004] SZN
    [JZOJ5837] Omeed
    [JZOJ5836] Sequence
    【题解】[CH弱省胡策R2]TATT
    【题解】简单题
    【题解】巧克力王国
    【题解】[SDOI2010]捉迷藏
  • 原文地址:https://www.cnblogs.com/qj696/p/11205826.html
Copyright © 2020-2023  润新知