zoukankan      html  css  js  c++  java
  • 121 monogdb安装, 增删改查, mongodb中的update修改器 pymomgo

    主要内容:

    1 mongodb的安装:https://www.cnblogs.com/DragonFire/p/9135630.html

    2 使用mongodb数据库的增删改查  

      use db  使用该数据库
    
      show dbs 查看当前服务器中写在磁盘上的数据库
    
      show tables 查看数据库中的collection
    

      a : 数据的增加:

    db.user_info.insertOne({name:"ywb",age:73})
    db.user_info.insertMany([{name:"dwb",age:999},{name:"lwb",age:999.5}])
    

      b : 数据的查询:

    db.collection.find({条件})
    db.collection.findOne({条件})
    db.user_info.find({},{"_id":0,"name":0}) #find后面可以跟过滤条件 带关键字的查询: 数学比较符: $gte, $lte, $eq, $gt, $lt db.user_info.findOne({id:{$gt: 1}}) db.user_info.findOne({id:{$eq: 1}}) $or db.collection.find({$or:[{name:1},{age:73}]}) $in db.collection.find({age:{$in:[1,2,3,4]}}) #符合其中一个条件即可 $all db.collection.find({hobby:{$all:[1,2,3,4]}}) #子集查询

      c : 数据的修改:

    	db.collection.updateOne({条件},{$修改器:{数据}}) 更新一条数据
    	db.collection.updateMany({条件},{$修改器:{数据}}) 更新所有数据
    	db.user_info.updateMany({id:{$gt: 0}},{$set:{name:2}})
    

      d : 数据的删除:

         db.collection.deleteOne({条件}) 删除一条数据
            db.collection.deleteMany({条件}) 删除所有符合条件的数据
         db.collection.drop() 删除表

    3 mongodb中的update修改器:  $inc   $set  $unset   $push   $pull

      a : $inc  对查询的结果在原有的基础上进行增加或者减少

    db.user_info.updateOne({age:27},{$inc:{age:1}})
    db.user_info.updateOne({age:28},{$inc:{age:-8}})
    

      b : $set 直接替换原来的值; 对原有的数据增加一个field

    db.user_info.updateOne({},{$set:{test_list:[1,2,3,4,5,6,7,8]}})
    db.user_info.updateOne({age:20},{$set:{age:21}})
    

      c : $unset 用来删除key(field)

    db.user_info.updateOne({id:1},{$unset:{name:1}})
    

      d : $push 用来操作array数据类型进行增加新元素, 相当于列表的append方法

    db.user_info.updateOne({id:1},{$push:{hobby:3}})
    

      e : $pull  与push对应,用来删除array中的某个元素

    db.user_info.updateOne({id:1},{$pull:{test_list:8}})
    

      f : $pop 指定删除array中的第一个或者最后一个元素. -1代表最前面, 1代表最后面, 正数后面,复数前面

    db.user_info.updateOne({id:1},{$pop:{test_list:1}})
    

    4 $字符 保存符合索引条件数据的下标

    #当出现多个四时, 采用$保存符合条件的数据的下标.
    db.user_info.updateOne({test_list:4},{$set:{"test_list.$":"四"}})

    5 object的操作

    db.user_info.updateOne({id:1},{$set:{"info.height":161}})
    db.user_info.updateOne({id:1},{$inc:{"info.weight":-7}})
    

    6 array +object的操作 

    db.user_info.updateOne({"hobby.weight":100},{$set:{"hobby.$.height":164}})
    

    7 limit sort skip

    db.user_info.find().limit(2).skip(1).sort({ id:-1 })
    重点: limit +skip +sort执行是有优先级别的, sort>skip>limit
             skip + limit的优先级: 先skip再limit
    

    8 pymong

      a : 用于连接数据库

    import pymongo
    import json
    from bson import ObjectId
    mongo_client = pymongo.MongoClient(host="127.0.0.1",port=27017)
    db = mongo_client["day120"]
    

      b : 增加数据

    res = db.user_info.insert_one({"id":15,"name":16})
    print(list(db.user_info.find()))
    print(res, res.inserted_id)
    # <pymongo.results.InsertOneResult object at 0x000001BF04838308> 5c21f8429221292820de73b2
    res = db.user_info.insert_many([{"id":16,"name":17},{"id":17,"name":18}])
    print(list(db.user_info.find()))
    # 查询多个id, 用inserted_ids
    print(res, res.inserted_ids)
    print(res, type(res))
    View Code

      c : 删除数据

    res = db.user_info.delete_many({"id":7})
    res = db.user_info.delete_one({"id":6})
    # 显示删除了几条数据, res.raw_result
    print(res, dir(res), res.raw_result)
    View Code

      d : 修改数据

    res = db.user_info.update_one({"id":1},{"$set":{"name":"yuanyuan"}})
    print(res, res.raw_result)
    res_obj = db.user_info.find_one({"name":"yuanyuan"})
    print(res_obj)
    View Code

      e : 查询数据

        # 把获取的生成器转换成列表
    # res = list(db.user_info.find({}))
    # print(res)
    # res = db.user_info.find_one({"id":1})
    # print(res)
    # res = list(db.user_info.find({"name":{"$in":["shishi",3,4]}}))
    # print(res)
    
    # res = list(db.user_info.find({"$or":[{"name":2},{"id":3}]}))
    # print(res)
    View Code

      f : 对于objectid json的操作

    res = db.user_info.find_one({"id":2,"name":3})
    print(res)
    # 对于json序列化的时候, 不能直接序列化ObjectId的类型, 所以把其转换成字符串
    # 对于再反过来取的时候, 需要把字符串转换成ObjectId类型
    res["_id"] = str(res["_id"])
    res_json = json.dumps(res)
    print(res_json)  #Object of type 'ObjectId' is not JSON serializable
    res_obj = db.user_info.find_one({"_id":ObjectId(res.get("_id"))})
    print(res_obj)
    View Code

      h : python中的update

    # 相比较于下面的方法更加的方便
    res = db.user_info.find_one({"name":"yuanyuan"})
    res.get("info")['height'] = 170
    res.get("info")['weight'] = 115
    print(res)
    
    res = db.user_info.update_one({"id":1},{"$set":{"info.height":180}})
    print(list(db.user_info.find()))
    

      l : skip sort limit

    res = list(db.user_info.find().limit(2))
    print(res)
    # limit+skip的优先级: skip>limit
    res = list(db.user_info.find().limit(2).skip(1))
    print(res)
    # 注意排序和mongo中的语法不一致
    # limit skip sort:  sort> skip > limit
    res = list(db.user_info.find({}).sort("id",pymongo.DESCENDING).skip(1).limit(3))
    print(res)
    

    9 mongodb的使用场景及优势:https://wenku.baidu.com/view/da471b54773231126edb6f1aff00bed5b9f373b4.html

     

      

  • 相关阅读:
    随时查询
    插入图片后R文件变红,报错“Error::app:mergeDebugResources'. > Some file crunching failed, see logs for detail”
    android 布局
    用SVN导入android项目时候没有导入default.properties这文件的解决方法
    Button的点击事件可以在XML文件中设置
    设置全屏有两种方式
    android 中加入的音乐文件有的时候没有播放。
    android spinner 调用xml里的数据
    刚刚申请了个博客发发感想
    .Net下WinForm换肤控件整理(转)
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10176067.html
Copyright © 2011-2022 走看看