• python使用mongoDB


    1.安装pymongo

    python连接mongo需要安装必要包pymongo:

    conda install pymongo
    pip install pymongo
    
    • 1
    • 2

    2.连接数据库

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    dblist = myclient.list_database_names()
    print(dblist)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    可以获取到mongo中的所有数据库名字,说明成功连接mongo:

    image-20220814214328160

    3.创建一个数据库

    mydb = myclient["database_name"]
    
    • 1

    注意:MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

    4.创建一个集合

    mydb = myclient["database_name"]
    mycol = mydb["one"]
    
    • 1
    • 2

    注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

    5.插入文档

    集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    x = mycol.insert_one({
        'name': 'Jenny',
        'age': 33})
    print(x)
    print(x.inserted_id)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image-20220814223417452

    image-20220814223436992

    集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    mylist = [
      { "name": "Tim", 'age': 13 },
      { "name": "Kai", 'age': 24},
      { "name": "Steven", 'age': 31},
    ]
    
    x = mycol.insert_many(mylist)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    image-20220814223822970

    我们也可以自己指定 id插入:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    x = mycol.insert_one({"_id": 1, "name": "Kis", 'age': 29 },)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220814224053459

    6.查询文档

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

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    print(mycol.find())
    for i in mycol.find():
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    image-20220814224614913

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

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    print(mycol.find_one({'name': 'Jenny'}))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220814224808118

    获取一条数据的具体属性,后边加上['name']

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    print(mycol.find_one({'name': 'Jenny'})['name'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220814225000665

    返回指定条数记录

    如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

    返回 2条文档记录:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    for i in mycol.find().limit(2):
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220814225215042

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

    MongoDB中条件操作符有:

    • (>) 大于 - $gt
    • (<) 小于 - $lt
    • (>=) 大于等于 - $gte
    • (<= ) 小于等于 - $lte

    举个栗子:

    查询年龄大于30的数据:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    for i in mycol.find({'age': {'$gt': 30}}):
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220814225623794

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

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

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

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    for i in mycol.find({'name': {"$regex": "^J"}}):
        print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220814225808532

    7.修改文档

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

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

    举个栗子,把Jenny年龄改为13:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    mycol.update_one({'name': "Jenny"}, {'$set': {'age': 13}})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220815085546556

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

    如果查找到的匹配数据多于一条,则会修改所有的。

    8. 删除数据

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

    举个栗子,删除所有13岁的数据:

    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["py_db"]
    mycol = mydb["one"]
    
    mycol.delete_many({'age': 13})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20220815090104488

    delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档

    9.删除集合

    使用 drop() 方法来删除一个集合。

    mycol_name.drop()//mycol_name为要删除的集合名字。
    
    • 1

    10.排序

    sort() 方法可以指定升序或降序排序。

    sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。

    mydoc = mycol.find().sort("age") 
    for x in mydoc:  
        print(x)
    
    • 1
    • 2
    • 3

    image-20220815090632813

  • 相关阅读:
    STM32F4移植SPI注意事项
    基于ssm的视力保养连锁预约系统设计与实现-计算机毕业设计源码+LW文档
    Git管理
    SpringBoot SpringBoot 开发实用篇 3 测试 3.4 发送虚拟请求
    android——Livedata、StateFlow、ShareFlow和Channel的介绍和使用
    Java注解(Annotation)
    2011年03月17日 Go生态洞察:探索Go与C的交互——Cgo
    酷开科技 | 酷开系统大屏电视,打造精彩家庭场景
    如何利用Flutter框架开发运行小程序
    (十五)使用Redis实现发布订阅功能
  • 原文地址:https://blog.csdn.net/weixin_43788986/article/details/126340230