• 2,MongoDB之增删改查及pymongo的使用


    本章我们来学习一下关于 MongoDB的增删改查

    一.MongoDB操作 之 原生ORM,根本不存在SQL语句

    创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间

    是的,MongoDB设计的比较随意,没有就认为你是在创建,use LuffyCity_Com是不存在的,所以MongoDB就认为你是要创建并使用

    这个概念一定要记清楚哦,MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象哦

    使用了不存在的对象,就代表创建对象,我们使用这一谬论创建一张表(Collection)试试

    看来真的不是谬论,真的成功的创建了一个Oldboy的Collection

    那么接下来就是在表(Collection)中添加一条数据了,怎么添加呢?

    二.MongoDB 之 插入数据(insert     insertOne     insertMany) 之 Collection 点儿出一切操作 之 insert

    insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐喽

    db.Oldboy.insert({"name":"DragonFire","age":20})

    insertOne: 插入一条数据,官方推荐

    我们可以看出来两种方法的返回值截然不同对吧

    insertMany:插入多条数据,无需参数控制,官方推荐

    这就是我们向LuffyCity_Com.Oldboy中插入了多条数据:

    [{
      "name":"DragonFire",
      "age":20    
    },
    {
     "name":"WuSir",
     "age":19
    }]

    这里留下一个数据类型的悬念

    插入完成就要查询

    三.MongoDB  之  查询数据(find findOne) 

    find() 无条件查找:将该表(Collection)中所有的数据一次性返回

    db.Oldboy.find({name:"WuSir2b"}) 条件查找:name等于WuSir2b的数据,这里会返回多条结果

    说到这里,不禁要问一下:"_id":ObjectId("乱七八糟一道对看着毫无关系的一对字符串") 是什么,我们插入的时候并没有一个字段(Field)并没有_id这个,

    对了这就是MongoDB自动给我们添加到系统唯一标识"_id" 是一个ObjectId 类型,我们会在数据类型中第一个说到他

    findOne()无条件查找一条数据,默认当前Collection中的第一条数据

    findOne({age:19}) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据

    查询数据的时候,发现了有些数据出现错误了,要修改怎么办呢?

    四.MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert一样,不推荐update的写法

    update({"name":"DragonFire"},{$set:{"age":21}}):根据条件修改该条数据的内容

    把name等于DragonFire中的age改为21,这里要注意的是({"条件"},{"关键字":{"修改内容"}}),其中如果条件为空,那么将会修改Collection中所有的数据

    关于$set关键字的解释就是,本节最后再说,留个悬念

    updateOne({"age":19},{$set:{"name":"WSSB"}}):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据

    把age等于19的所有数据中第一条数据的name改为WSSB

    updateMany({"age":19},{$set:{"name":"pig_qi"}}):根据条件修改所有数据的内容,多条修改

    把age等于19的所有数据中的name改为WSSB

    上述中有一个$set的悬念,这个悬念呀,可能要留到再往后一些了

    但是$set:{"name":"WSSB"}我还是要解释一下: $set 是update时的关键字,表示我要设置name属性的值为"WSSB"

    那么我们之前说过MongoDB的灵活性,没有就代表我要创建,所以说如果该条Documents没有name属性,他就会自动创建一个name属性并且赋值为"WSSB"

    更改了半天,我觉得,这些数据我都不想要了,该怎么办呢?

     四.MongoDB  之  删除数据(remove) 

    remove({}):无条件删除数据,这里要注意了,这是删除所有数据,清空Collection

    当然了,我现在还不会操作,你看到的截图是我全部都写完之后的截图

     

    如果你的数据全没了,那么请再练习一次insertMany([{"name":"DragonFire"}])吧,你多练习一次,总比马上忘记要强吧

    remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的所有Document

    那么到这里呢,增删改查就已经完事儿了 

    pymongo

    import json
    import pymongo
    
    from bson import ObjectId
    
    mongoclient = pymongo.MongoClient(host="127.0.0.1", port=27017)
    MongoDB = mongoclient["db1"]
    
    
    # 查询
    res = MongoDB.s1.find()
    for i in res:
        print(i)
        i["_id"] = str(i.get("_id"))
        print(i.get("_id"), type(i.get("_id")))
        s = json.dumps(i)
    
    # res = MongoDB.s1.find_one({}, {'_id': 0})
    
    # res = list(MongoDB.s1.find({'id': 1}, {'_id': 0}))
    res = MongoDB.s1.find_one({'age': 44})
    
    
    # 增加
    # res = MongoDB.s1.insert_one({'id': 1, 'name': 'tabai', 'age':55})
    
    # res = MongoDB.s1.insert_many([{'id': 1, 'name': 'tabai', 'age':55},{'id': 2, 'name': 'jinxing', 'age':44}])
    
    # 修改
    # res = MongoDB.s1.update_one({'age': 55}, {'$set': {'name': 'white'} })
    
    # res = MongoDB.s1.update_many({'age': 44}, {'$set': {'name': 'gold_star'}})
    
    
    # 删除
    # res = MongoDB.s1.delete_one({'id':1})
    # print(res)
    
    
    # sort  limit skip
    
    # res = list(MongoDB.s1.find({}).limit(5).skip(2))
    
    # res = list(MongoDB.s1.find({}).sort('age', pymongo.DESCENDING).limit(5).skip(2))
    # res = list(MongoDB.s1.find({}).sort('age', pymongo.ASCENDING).limit(5).skip(2))
    
    # res = MongoDB.s1.find_one({'_id': ObjectId('5c3edd8d51d50c2bb87e16c4')})
    
    
    print(res)
    

      

     
     
     
  • 相关阅读:
    关于python3在centOS7下源码安装的配置
    nginx服务器多虚拟主机配置
    完全数
    高精度计算组合数
    算法竞赛入门经典第六章总结
    线段树
    奶牛
    算法竞赛入门经典第五章总结
    优先队列的使用方法
    放魔法石的游戏
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/10279277.html
Copyright © 2020-2023  润新知