• MongoDB 数据库的概念以增删改查


    1,MongoDB概念解析:

    Mongo数据库基本概念是文档,集合,数据库,下表给予介绍

    SQL术语概念 MongoDB术语概念 解释/说明
    database database 数据库
    table collestion 数据库/集合
    row document 数据记录行/文档
    column field 数据字段/域
    index index 索引
    table joins   表连接,MongoDB不支持
    primary key primary key 主键,MongoDB自动将_id字段设置为主键

    一个MongoDB中可以建立多个数据库.MongoDB的默认数据库为"db",该数据存在data目录中.MongoDB的单个 实例 可以容纳多个独立的数据库.每一个都有自己的集合权限,不同的数据库也放置在不同的文件中.

    show dbs   展示所有数据库

    以上实例命令中,"local"是要选择的数据库.

    数据库名是保留的,可以直接访问这些特殊作用的数据库.

    • admin: 从权限的角度来看,这是"root"数据库,钥匙将一个用户添加到这个数据库,这个用户自动继承所有的数据库的权限.一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
    • local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    • config:当Mongo用于分片设置式,config数据库在内部使用,用于白村分片的相关信息

    2,MongoDB的查找:

    查找语句:

    // 插入多条数据用{},{}隔开
    db.xiaopangpang.insertMany([{
        "name":"xuexue",
        "age":29,
        "hobby":["继继","帅爆太阳的男人","帅爆太阳那人"]
    }])
    db.xiaopangpang.insertMany([{
        "name":"xiaoxue",
        "age":28,
        "hobby":["帅爆太阳的men", "帅爆太阳的gentleman","帅爆太阳的行者"]
    }])
    db.xiaopangpang.insertMany([{
        "name":"xueren",
        "age":27,
        "hobby":["多想再见你","哪怕匆匆一眼","就离去"]
    }])

     增加语句:

    db.xiaopangpang.insertOne({
        "name":"miss",
        "age":26,
        
    })

    更新语句:

    })
    // 更新编辑数据的操作
    db.xiaopangpang.updateOne({"name":"xiaoxueza"},{$set:{"name":"laingxue"}})
    db.xiaopangpang.updateMany({"age":{$gt:28}},{$set:{"age":30}})
    db.xiaopangpang.find()

    删除语句:

    // 删除数据remove({})什么都不加把表里的数据都删除
    db.xiaopangpang.remove({})
    db.xiaopangpang.find({
        "name":"miss"
    })
    // 删除表里边的数据
    db.xiaopangpang.deleteOne({"name":"xiaoxue"})
    db.xiaopangpang.find()
    db.xiaopangpang.insertOne({
        "name":"jdhjasfho",
        "age":23,
        "hobby":["fmkljfl","daf"]
    })

     3,MongoDB的进阶操作

    3.1,大胖胖表的增删改查

    // 大胖胖的表的增删该查
    // 查看所有的表
    show tables
    db.dapangpang.find({})

    修改器:

    // 修改器
    db.dapangpang.updateOne({"name":"雪雪"},{$set:{"name":"雪雪"}})
    //$unset 简单粗暴的删除字段
    db.dapangpang.updateOne({"name":"雪雪"},{$unset:{"name":"雪雪"}})
    db.dapangpang.insertOne({
        "name":"雪人",
        "hobby":[
            "me", 
            "my", 
            "i", 
            "miss"
            ]
    })
    // 插入年龄的字段
    db.dapangpang.updateMany({},{$set:{"age":26}})
    // $inc引用增加
    db.dapangpang.updateMany({"name":"雪ren"},{$inc:{"age":2}})
    db.dapangpang.remove({})
    db.dapangpang.insertMany([{
        "name":"雪雪",
        "hobby":[
            "帅爆太阳的男人", "帅爆太阳那人", "帅爆太阳的men"
            ],
            "age":27
    }, 
    {
        "name":"小雪",
        "hobby":[
            "花落翩翩", "时光旋转","慢慢沦陷"
            ],
            "age":26
    }])

    // array操作,在array中添加一个新的元素
    db.dapangpang.updateOne({"name":"雪人"},{$push:{"hobby":"miss"}})

    // pull在array中删除一个的元素
    db.dapangpang.updateOne({"name":"雪雪"},{$pull:{"hobby":"帅爆太阳那人"}})

    //pop不含索引-1,从前往后, 1从后往前
    db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":1}})
    db.dapangpang.updateOne({"name":"小雪"},{$pop:{"hobby":-1}})

    //保留索引条件数据的下标,实际是定位到那个字典或者列表
    db.dapangpang.updateOne({"hobby":"me"},{$set:{"hobby.$":"it's ok!"}})

    // Object字典的操作
    db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:["perfect", "lovely","stubborn"]}})
    db.dapangpang.updateOne({"name":"雪雪"},{$set:{feature:{"size":32,}}})
    db.dapangpang.updateOne({"name":"雪雪"},{$inc:{"feature.size":5}})

    // 修改hobby中的big
    db.dapangpang.updateOne({"hobby.depth":6},{$set:{"hobby.$.big":26}})

    //limit表示从当前位置选择若干个
    db.dapangpang.find({}).limit(2)
    // skip跳过
    db.dapangpang.find({}).skip(2)
    // sort排序
    db.dapangpang.find({}).sort({age:-1})
    db.dapangpang.find({}).sort({"name":1})
    // limit + skip + sort 分页
    // 优先级最高的为sort
    // 其次为skip
    // 最低级为limit
    db.dapangpang.find({}).limit(1).sort({age:-1}).skip(1)

     

    4,MongoDB在python中的应用

    • 连接MongoDB服务器
    import pymongo
    from bson import ObjectId
    
    # 连接mongo服务器
    mongo_client = pymongo.MongoClient(host="127.0.0.1", port=27017)
    MONGO = mongo_client.get_database("xuexue")
    tb = MONGO.get_collection("dapangpang")
    print(tb)

    • 查找数据
    # 查询数据库
    res = tb.find()
    print(res, type(res))
    for data in res:
        print(data)
    res1 = tb.find_one({"name": "雪雪"})
    print(res1)
    res2 = tb.find({"$or":[{"name":"小雪"}, {"hobby": "帅爆太阳的男人"}]})
    for data in res2:
        print(data)

     

    res_obj = tb.find_one({"_id":ObjectId(res1["_id"])})
    print(res_obj)

    • 增加数据
    # 增加数据
    # res = tb.insert_one({"name": "雷子", "age": 24,"hobby":["健身", "学习", "小说"]})
    # print(res,res.inserted_id)
    # ret = tb.find_one({"name":"雷子"})
    # print(ret)
    # res1 = tb.insert_many([{
    #     "name": "郝哥", "age": 27, "hobby":["宋 ", "振", "中"]},
    #     {"name": "佳丽", "age": 27, "hobby": ["还真不了解", "也不知道为什么", "  可能是鬼迷心窍了吧 "]}
    # ])
    # print(res1)
    # ret1 = tb.find_one({"name": "郝哥"})
    # ret2 = tb.find_one({"name": "佳丽"})
    # print(ret1, ret2)
    # ret3 = tb.find()
    # for data in ret3:
    #     print(data)

    • 修改数据
    # 修改数据
    res = tb.update_one({"name": "佳丽"}, {"$set": {"age": 27}})
    print(res,dir(res), res.raw_result)
    ret = tb.find_one({"name": "佳丽"})
    print(ret)

    • 删除数据
    # 删除数据
    # res = tb.delete_one({"name": "雷子"})
    # print(res, dir(res), res.raw_result)
    # res1 = tb.delete_many({"name": "郝哥"})
    # print(res1, res1.raw_result)
    # res = tb.find()
    # for data in res:
    #     print(data)
    # print(res)

  • 相关阅读:
    【41】了解隐式接口和编译期多态
    【17】以独立语句将newed对象置入智能指针
    【16】成对使用new和delete时要采取相同形式
    【15】在资源管理类中提供对原始资源的访问
    【14】在资源管理类中小心copying行为
    【02】尽量以const,enum,inline替换#define
    【01】视C++为一个语言联邦
    一次数据库hang住的分析过程
    针对某个数据库error做systemstate dump
    数据库hang住如何收集信息
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/10265903.html
Copyright © 2020-2023  润新知