• pymongo


    一、安装

    conda install pymongo

    二、使用

    1、连接

    from pymongo import MongoClient
    
    client = MongoClient(host='ip', port=27017)
    # 使用方括号的方式选择数据库和集合
    collection = client['db3']['stu']

    2、插入数据

    # 1. 插入一条数据
    ret = collection.insert_one({"name": "tom", "age": 24})
    # 打印_id的值
    print(ret.inserted_id)
    # 2. 插入多条数据 stu_lst = [{"name": "test{}".format(i), "age": 18 + i} for i in range(10)] ret = collection.insert_many(stu_lst)
    # 打印所有_id的值
    print(ret.inserted_ids) 注意: 在插入多条数据的情况下,使用insert_many(效率高),而不是使用insert_one
    + for循环

    3、更新数据

    # 1. 更新一条数据
    collection.update_one({"name": "tom"}, {"$set": {"age": 100}})
    # 2. 更新多条数据
    ret = collection.update_many({"name": "tom"}, {"$set": {"age": 18}})
    # 3. 匹配的数据条数
    print(ret.matched_count)
    # 4. 影响的数据条数
    print(ret.modified_count)

    4、查找数据

    # 1. 查找一条数据
    ret = collection.find_one({"name": "tom"})
    print(ret)
    # 2. 查找多条数据
    ret = collection.find({"name": "tom"})
    for i in ret:
        print(i)
    
    注意:
    查找数据和读取文件一样,游标在移动,只能遍历一次,相当于生成器
    ret = collection.find() # 查找所有数据
    data_list = list(ret)   # 强转,获取list
    data_list的格式[{}, {}, {}, {}]

    根据ObjectId查找

    from bson import ObjectId
    ret = collection.find_one({"_id": ObjectId("5dde12dc4141a75e1a102d80")})
    print(ret)

    条件

    $lt     小于              {"age": {"$lt": 20}}
    $gt     大于              {"age": {"$gt": 20}}
    $lte    小于等于           {"age": {"$lte": 20}}
    $gte    大于等于           {"age": {"$gte": 20}}
    $ne     不等于             {"age": {"$ne": 20}}
    $in     在范围内           {"age": {"$in": [18, 20]}}
    $nin    不在范围内         {"age": {"$nin": [18, 20]}}
    $regex  匹配正则表达式      {"name": {"$regex": '^M*'}}     # name以M开头  
    $exists 属性是否存在        {"name": {"$exists": True}}     # name属性存在
    $type   类型判断            {"age": {"$type": "int"}}       # age的类型为int
    $mod    数字模操作          {"age": {"$mod": [5, 0]}}     # 年龄模5余0
    $text   文本查询           {"$text": {"$search": "Mike"}}   # text类型的属性包含Mike字符串
    $where  高级条件查询        {"$where": "obj.fans_count == obj.follows_count"}     # 自身粉丝数等于关注数

    计算数量

    collection.find().count()

    排序

    collection.find().sort('name', pymongo.ASCENDING)
    # pymongo.ASCENDING  升序排序
    # pymongo.DESCENDING 降序排序 

    偏移

    collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)

    5、删除数据

    # 1. 删除一条数据
    collection.delete_one({"name": "test1"})
    # 2. 删除多条数据
    ret = collection.delete_many({"name": "tom"})
    # 3. 删除数据的条数
    print(ret.deleted_count)
  • 相关阅读:
    GridControl 选择列、复选框全选(上)
    iOS开发隐藏键盘方法总结
    Leetcode:remove_duplicates_from_sorted_list
    新版的Spring4X怎样下载
    leetcode 242: Valid Anagram
    最简单的基于FFMPEG的Helloworld程序
    电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合
    电子商务系统的设计与实现(十):DWZ框架与第三方分页组件整合
    电子商务系统的设计与实现(九):后端管理系统功能细化
    电子商务系统的设计与实现(九):后端管理系统功能细化
  • 原文地址:https://www.cnblogs.com/wt7018/p/11937394.html
Copyright © 2020-2023  润新知