zoukankan      html  css  js  c++  java
  • MongoDB学习【四】—pymongo操作mongodb数据库

    一、pymongodb的安装

    Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。

    pip安装

    pip 是一个通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。

    安装 pymongo

    python3 -m pip3 install pymongo
    python3 -m pip3 install pymongo==3.5.1  # 指定版本安装

    二、pymongodb操作mongodb数据库

    1.连接数据库

    通过pymongo连接mongodb数据库

    import pymongo
    client = pymongo.MongoClient("127.0.0.1", 27017)
    dblist = client.database_names()  # 显示服务器上的所有数据库
    # 新版本写法
    dblist = client.list_database_names()
    ​
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    # print(db)  # 数据库操作对象

    2.文档的增加

    集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    # print(db)  # 数据库操作对象
    """增加"""
    # 增加单条
    mydict = {"name":"ryxiong","age":99}
    res = db.stu.insert_one(mydict)
    print(res.inserted_id)  # 5d2ed8f865d6b8f1c494ff78 ObjectId对象,不是字符串
    # 增加多条
    mylist = [{"name":"black"},{"name":"white"}]
    res = db.stu.insert_many(mylist)
    print(res.inserted_ids)  # [ObjectId('5d2fcc93c4f3d6ecb7178c87'), ObjectId('5d2fcc93c4f3d6ecb7178c88')]

    3.查询文档

    MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。

    查询一条数据

    我们可以使用 find_one() 方法来查询集合中的一条数据。

    import pymongo
    from bson import ObjectId
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    ​
    res1 = db.stu.find_one({"name": "ryxiong"})
    res2 = db.stu.find_one({"_id": ObjectId("5d2f0a052a8ee222edddb297")})  # 将字符串的ObjectID转为对象后查询

    查询集合中的所有数据或多条

    find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

    import pymongo
    from bson import ObjectId
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    # 查询多个
    res3 = db.stu.find({})  # 查询所有记录
    res4 = db.stu.find({"name": "ryxiong"})  # 查询符合条件的所有,生成器

    高级查询

    查询的条件语句中,我们还可以使用修饰符。

    以下实例用于读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"}

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    ​
    myquery = { "name": { "$gt": "H" } }
    res = mycol.find(myquery)

    正则表达式查询

    我们还可以使用正则表达式作为修饰符。

    正则表达式修饰符只用于搜索字符串的字段。

    以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"}

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    ​
    myquery = { "name": { "$regex": "^R" } }
    mydoc = mycol.find(myquery)
    for x in mydoc:
        print(x)

    查询结果排序,跳过,截取条数

    如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法

    对结果排序通过sort()方法,对结果忽略某些结果用skip

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    # 1.查询结果的排序,跳过,和截取
    sort_res = list(db.stu.find().sort("age", pymongo.DESCENDING))  # 查询所有结果,并根据年龄的降序排序
    skip_res = list(db.stu.find().skip(2))  # 查询所有结果,并过滤掉前两条
    limit_res = list(db.stu.find().limit(2))  # 查询所有结果,并截取前两条显示
    # 2.分页效果
    pagination_res = list(db.stu.find().sort("age", pymongo.ASCENDING).limit(2).skip(2))

    4.修改文档

    在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

    如果查找到的匹配数据多余一条,则只会修改第一条。

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"]  # 连接数据库,获取库,如果库名存在,则使用,不存在创建
    """修改"""
    # 方式一
    # 查询到直接更新设置值
    res = db.stu.update_one({"name":"ryxiong"},{"$set":{"age":222}})
    print(res.modified_count)
    ​
    # 方式二.1
    # 查到记录,在字典中添加值
    res = db.stu.find_one({"name":"ryxiong"})
    res["gender"] = "male"
    res["hobby"] = "photography"
    res["name"] = "ryxiong1"
    # 将值更新到记录中去
    res = db.stu.update_one({"name":"ryxiong"},{"$set":res})
    print(res.modified_count)

    5.删除数据

    删除单挑

    使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"] 
    ​
    del_res1 = db.stu.delete_one({"name": "ryxiong"})  # 删除满足条件的结果中的第一条
    print(del_res1.deleted_count)

    删除多条

    使用 delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

    import pymongo
    ​
    client = pymongo.MongoClient("127.0.0.1", 27017)
    db = client["practice"] 
    ​
    query = { "name": {"$regex": "^F"} }
    del_res = db.stu.delete_many(myquery)  # 删除满足条件的多条
    print(del_res.deleted_count)
    ​
    # 删除所有
    del_res = db.stu.delete_many({})

     

  • 相关阅读:
    一天快速入门Python语法基础之类与继承
    一天快速入门Python语法基础之函数
    一天快速入门Python语法基础之用户输入和if while语句
    一天快速入门Python语法基础之字典
    一天快速入门Python语法基础之操作列表
    应用Maven管理SringMvc+MyBaties登录功能的实现
    在eclipse中使用Maven以及HelloWorld的实现
    C++和Java实现基本的选择排序和常见错误
    Maven的安装和配置以及HelloWorld的实现
    POJ--3311--Hie with the Pie(暴力枚举+floyd)/(状态压缩DP+floyd)
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/11205303.html
Copyright © 2011-2022 走看看