• PyMongo


    安装:

    pip install pymongo

    创建数据库(先装好MongoDB,并且启动):

    import pymongo
     
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    mydb = myclient['school']

    检查数据库是否已存在:

    dblist = myclient.list_database_names()
    # dblist = myclient.database_names()
    # database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。 if 'school' in dblist: print("数据库已存在!")

    创建集合(表):

    mycol = mydb["children"]

    判断集合是否存在:

    collist = mydb. list_collection_names()
    # collist = mydb.collection_names()
    if "children" in collist:   # 判断 children 集合是否存在
      print("集合已存在!")

    数据库操作:

    增:

    # 增加一条数据
    children = { 'name': '小米', 'age': 8, 'score': 72 } a = mycol.insert_one(children)
    # print(x.inserted_id) 输出插入后对象的id

    看到数据库已经插入成功

    # 增加多条数据
    children = [{
        'name': '小米',
        'age': 8,
        'score': 72
    },{
        'name': '小明',
        'age': 9,
        'score': 54
    },{
        'name': '小红',
        'age': 10,
        'score': 62
    },{
        'name': '小刚',
        'age': 11,
        'score': 88
    }]
    
    a = mycol.insert_many(children)
    print(a.inserted_ids)
    
    # 输出
    [ObjectId('5efebd97495b81bcb755df95'), ObjectId('5efebd97495b81bcb755df96'), ObjectId('5efebd97495b81bcb755df97'), ObjectId('5efebd97495b81bcb755df98')]

     插入成功

    如果要自定义id则在对象里加入属性'_id'

    查:

    # 查一个
    c = mycol.find_one()
    # 查所有
    a = mycol.find()
    for item in a:
        print(item)
    
    #输出
    {'_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72}
    {'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72}
    {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54}
    {'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 10, 'score': 62}
    {'_id': ObjectId('5efebd97495b81bcb755df98'), 'name': '小刚', 'age': 11, 'score': 88}
    # 在 find() 中设置参数来过滤数据
    x = mycol.find({'name': '小红'})
    for item in x:
        print(item)
    
    #输出
    {'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 10, 'score': 62}
    
    # 对查询结果设置指定条数的记录可以使用 limit() 方法
    x = mycol.find().limit(3)
    for item in x:
        print(item)
    # 输出 {
    '_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54} # 正则表达式查询,正则表达式修饰符只用于搜索字符串的字段 x = mycol.find({'name':{'$regex':''}}) for item in x: print(item) # 输出 {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54}
    # 类似正则表达式的条件还有
    $lt小于{'age': {'$lt': 20}}
    $gt大于{'age': {'$gt': 20}}
    $lte小于等于{'age': {'$lte': 20}}
    $gte大于等于{'age': {'$gte': 20}}
    $ne不等于{'age': {'$ne': 20}}
    $in在范围内{'age': {'$in': [20, 23]}}
    $nin不在范围内{'age': {'$nin': [20, 23]}}
    $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'}自身粉丝数等于关注数
    # 这些操作的更详细用法在可以在MongoDB官方文档找到:
    https://docs.mongodb.com/manual/reference/operator/query/

    改:

    myquery = {"name": '小红'} #条件
    newvalues = {"$set": {"age": 13,"score": 100}} #修改
    # 更新一条数据
    mycol.update_one(myquery, newvalues)
    # 更新全部数据
    mycol.update_many(myquery, newvalues)

    删:

    myquery = { "name": "小明" }
    # 删除一个
    mycol.delete_one(myquery)
    # 删除多个
    x = mycol.delete_many(myquery)
    # deleted_count是删除的个数
    print(x.deleted_count, "个文档已删除")
    # delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档
    # drop()是删除一个集合(表)
    mycol.drop()

    排序:

    s = mycol.find().sort("age")
    # mycol.find().sort("age",-1) 降序
    for x in s: print(x) #输出 {'_id': ObjectId('5efd8794fafed20bb1930488'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df95'), 'name': '小米', 'age': 8, 'score': 72} {'_id': ObjectId('5efebd97495b81bcb755df96'), 'name': '小明', 'age': 9, 'score': 54} {'_id': ObjectId('5efebd97495b81bcb755df98'), 'name': '小刚', 'age': 11, 'score': 88} {'_id': ObjectId('5efebd97495b81bcb755df97'), 'name': '小红', 'age': 13, 'score': 100}
  • 相关阅读:
    找轮转后的有序数组中第K小的数
    linux下安装tomcat,并设置自动启动
    maven中添加proguard来混淆代码
    Maven编译可执行jar
    Maven pom项目部署
    Eclipse主题设置
    double hashing 双重哈希
    推荐系统
    vim插件
    多标记学习--Learning from Multi-Label Data
  • 原文地址:https://www.cnblogs.com/daicw/p/13230014.html
Copyright © 2020-2023  润新知