zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    将PHP文件生成静态文件源码
    Entity Framework Code First 学习日记(6)一对多关系
    Entity Framework Code First 学习日记(5)
    Entity Framework Code First 学习日记(3)
    Entity Framework Code First 学习日记(7)多对多关系
    Entity Framework Code First学习日记(2)
    Entity Framework Code First 学习日记(8)一对一关系
    Entity Framework Code First 学习日记(9)映射继承关系
    Entity Framework Code First 学习日记(10)兼容遗留数据库
    Entity Framework Code First 学习日记(4)
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/10265903.html
Copyright © 2011-2022 走看看