zoukankan      html  css  js  c++  java
  • pymongo的用法总结

    一、安装与更新

    pip install pymongo  # 常用安装
    pip install pymongo==3.5.1  # 指定版本安装
    pip install --upgrade pymongo  # 更新安装

    二、创建数据库、集合

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017")  # 连接数据库
    print(dbcon.database_names())  # 已存在的数据库
    
    结果: ['admin', 'config', 'lion', 'local']
    
    mydb = dbcon["lion"]  # 选择lion数据库
    print(mydb.collection_names())  # 已存在的集合
    
    mycol = mydb["kzg_col"]  # 选择集合

      

    三、插入数据

      1、插入单条数据(返回一个id)

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017")  # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"]  # 选择集合名
    
    insertData = { "name": "RUNOOB2", "alexa": "10000", "url": "https://www.runoob.com" }
    ins = mycol.insert_one(insertData)  # 插入一条数据
    print(ins.inserted_id)
    
    结果: 5d81f4961565d78070165d24

      2、插入多条数据(返回多个id)

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.20.x.x:27017")  # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"]  # 选择集合名
    
    mylist = [
      { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
      { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
      { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
      { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
      { "name": "Github", "alexa": "109", "url": "https://www.github.com" }
    ]
    ins = mycol.insert_many(mylist)  # 插入多条数据
    print(ins.inserted_ids)

      3、插入的数据可以指定id吗

    mylist = [
      { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
      { "_id": 2, "name": "Google", "address": "Google 搜索"},
      { "_id": 3, "name": "Facebook", "address": "脸书"},
      { "_id": 4, "name": "Taobao", "address": "淘宝"},
      { "_id": 5, "name": "Zhihu", "address": "知乎"}
    ]
    ins = mycol.insert_many(mylist)  # 插入多条数据
    print(ins.inserted_ids)
    结果:[1, 2, 3, 4, 5]

    四、删除数据

      1、删除一条数据

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.x.x.x:x")  # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"]  # 选择集合名
    
    qu = {"name":"RUNOOB"}
    print(mycol.find().count())  # 总数18
    print(mycol.find(qu).count())  # 待删除数据2
    print(mycol.delete_one(qu))  # 删除1条
    print(mycol.find().count())  # 剩17条

    print(mycol.find().count())  # 总数17
    print(mycol.find_one_and_delete(qu)) # 返回删除的数据
    print(mycol.find().count()) # 剩16条

      2、一次删除多条数据

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo

    dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017") # 连接数据库
    mydb = dbcon["lion"] # 选择lion数据库
    mycol = mydb["kzg_col"] # 选择集合名

    qu = {"name": {"$regex":"^F"}}

    print(mycol.find().count()) # 总数16
    print(mycol.find(qu).count()) # 符合查询条件3条
    d = mycol.delete_many(qu) # 删除多条
    print(d.deleted_count) # 已删除3条
    d = mycol.delete_many({}) # 删除所有数据(集合存在, 数据为空)
    mycol.drop() # 删除集合
    print(mycol.find().count()) # 总数13条

    五、修改数据

      1、修改一条数据

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo

    dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017") # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"] # 选择集合名

    myq = {"name": "Taobao"} # 查询name=Taobao
    myq = {"name": {"$regex":"^F"}} # 查询 name以F开头
    myu = {"$set": {"alexa": 200}} # 更新 alexa=200

    u = mycol.update_one(myq, myu) # 一次更新一条
    u = mycol.update_many(myq, myu) # 一次更新多条
    print(u.modified_count) # 修改数量


    六、查询

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017")  # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"]  # 选择集合名
    
    mycol.find_one()  # 查询集合中的第一条数据
    mycol.find()  # 查询集合中的所有数据
    # 0不返回 1返回 ,_id 列不特指默认返回
    for x in mycol.find({}, {"_id": 0, "name": 1, "alexa": 1}):
        print(x)
    # 除了字段alexa不显示, 其它的都显示
    for x in mycol.find({}, {"alexa": 0}):
        print(x)
    # 只显示_id和alexa字段
    for x in mycol.find({}, {"alexa": 1}):
        print(x)
    # 指定查询条件
    mydoc = mycol.find({"name": "Taobao"})
    for d in mydoc:
        print(d)
    # 高级查询(name字段第一个字母大于H的数据)
    mydoc = mycol.find({"name":{"$gt":"H"}})
    # 正则表达式(查询字符串的字段)
    mydoc = mycol.find({"name":{"$regex":"^G"}})
    # 返回指定数量的条数
    res = mycol.find().limit(3)
    print(res.count())  # 总数5条
    for x in res:  # 实际返回3条
        print(x)

     七、排序

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import pymongo
    
    dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017")  # 连接数据库
    mydb = dbcon["lion"]  # 选择lion数据库
    mycol = mydb["kzg_col"]  # 选择集合名
    
    # sort 第一个参数为排序字段, 第二个参数1为升序, -1 为降序, 默认升序
    mydoc = mycol.find().sort("alexa", -1)
    for d in mydoc:
        print(d)
  • 相关阅读:
    展望2018
    Android按下home键后重新打开app进入主activity的问题
    RxJava整合Retrofit遇到的问题总结
    【总结】四种逆元的求法
    【NOIP模板汇总】I Am Me
    【总结】两类素数筛详解
    【NOIP2009】最优贸易
    【SHOI2002】滑雪
    【51NOD1398】等公交
    【复习总结】玫瑰人生 La Vie en Rose
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/8391211.html
Copyright © 2011-2022 走看看