• mongodb数据库操作 python+命令行


     

    一、python操作

    from bson.objectid import ObjectId
    
    import pymongo
    client1 = pymongo.MongoClient(host='localhost', port=27017)
    
    from pymongo import MongoClient
    client2 = MongoClient('mongodb://localhost:27017/')
    
    '''
    两种方式都行
    '''
    
    '''
    指定数据库
    '''
    db = client1.test
    db2 = client1['test']
    
    
    
    '''
    指定集合
    '''
    collection = db.students
    collection2 = db['students']
    
    '''
    指定要插入的数据
    '''
    student = {
        'id': '20170101',
        'name': 'Jordan',
        'age': 20,
        'gender': 'male'
    }
    student2 = {
        'id': '20170202',
        'name': 'Mike',
        'age': 21,
        'gender': 'male'
    }
    
    
    '''
    保存(可以插入多条)   结果返回id集合
    '''
    result = collection.insert(student)
    print(result)
    
    result = collection.insert([student, student2])
    print(result)
    #=====================================================官方推荐=====================================
    result = collection.insert_one(student)
    print(result)
    print(result.inserted_id)
    
    result = collection.insert_many([student, student2])
    print(result)
    print(result.inserted_ids)
    
    
    '''
    ================================================================查询===============================
    '''
    #单条查询
    result = collection.find_one({'name': 'Mike'})
    print(type(result))
    print(result)
    
    
    
    #根据id查询
    result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
    print(result)
    #多条查询
    results = collection.find({'age': 20})
    print(results)
    for result in results:
        print(result)
    #查询年龄大于20
    results = collection.find({'age': {'$gt': 20}})
    
    # $lt  小于
    #
    # $gt  大于
    #
    # $lte  小于等于
    #
    # $gte  大于等于
    #
    # $ne   不等于
    #
    # $in  在范围内
    #
    # $nin  不在范围内
    
    #利用正则
    
    #查询以m开头的
    results1 = collection.find({'name': {'$regex': '^M.*'}})
    
    # 符号  含义  示例  示例含义
    #
    # $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'}  自身粉丝数等于关注数
    '''
    ===========================================================统计==================================
    '''
    count = collection.find().count()
    print(count)
    # 或者统计符合某个条件的数据:
    
    count = collection.find({'age': 20}).count()
    print(count)
    
    
    '''
    ===========================================================排序==================================
    升序   pymongo.ASCENDING
    降序   pymongo.DESCENDING
    '''
    results11 = collection.find().sort('name', pymongo.ASCENDING)
    print([result['name'] for result in results])
    
    #跳过两个 取两个
    results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
    print([result['name'] for result in results])
    
    
    '''
    ===========================================================修改==================================
    '''
    
    condition = {'name': 'Kevin'}
    student = collection.find_one(condition)
    student['age'] = 25
    result = collection.update(condition, student)
    print(result)
    
    
    #推荐
    condition = {'name': 'Kevin'}
    student = collection.find_one(condition)
    student['age'] = 26
    result = collection.update_one(condition, {'$set': student})
    print(result)
    print(result.matched_count, result.modified_count)
    #返回结果----匹配的数据条数和影响的数据条数
    
    condition = {'age': {'$gt': 20}}
    result = collection.update_one(condition, {'$inc': {'age': 1}})
    print(result)
    print(result.matched_count, result.modified_count)
    
    condition = {'age': {'$gt': 20}}
    result = collection.update_many(condition, {'$inc': {'age': 1}})
    print(result)
    print(result.matched_count, result.modified_count)
    
    '''
    ===========================================================删除==================================
    '''
    
    result = collection.remove({'name': 'Kevin'})
    print(result)
    
    #推荐
    result = collection.delete_one({'name': 'Kevin'})
    print(result)
    print(result.deleted_count)
    result = collection.delete_many({'age': {'$lt': 25}})
    print(result.deleted_count)

    二、命令行

    # 命令操作
    '''
    1、显示当前数据库服务上的数据库
    
    
    show dbs;
    
    
    2、切换到指定的数据库进行操作
    
    
    use mydb
    
    
    3、显示当前数据库的所有集合(collections)
    
    
    show collections;
    
    
    4、查看数据库服务的状态
    
    
    db.serverStatus();
    
    
    5、查询指定数据库的统计信息
    
    
    use admin
    
    
    db.stat()
    
    
    6、查询指定数据库包含的集合名称列表
    
    
    use test1
    
    
    db.getCollectionNames()
    
    
    7、统计集合记录数
    
    
    db.test1.count()
    
    
    8、统计指定条件的记录数
    
    
    db.test1.find({"name":"yunweicai"}).count()
    
    
    9、查询指定数据库的集合当前可用的存储空间
    
    
    db.test1.storageSize()
    
    
    10、查询指定数据库的集合分配的存储空间
    
    
    db.test1.totalSize()
    
    1、创建数据库
    
    
    不需要什么create database的命令,只要使用use命令就可以创建数据库
    
    
    use test1
    
    
    2、删除数据库
    
    
    use test1
    
    
    db.dropDatabase()
    
    
    3、创建集合
    
    
    可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合
    
    
    也可以直接插入一个数据库就直接创建了
    
    
    db.test1.insert({"name":"mongodb","user":"opcai"})
    
    
    4、删除集合
    
    
    db.test1.drop()
    
    
    5、插入记录
    
    
    db.test1.save({"name":"yunweicai"})
    
    
    或者
    
    
    db.test1.insert({"name":"mongodb","user":"opcai"})
    
    
    6、查询记录
    
    
    db.test1.find()
    
    
    find()里面可以指定多个条件进行查询,如果为空,就查询所有的数据
    
    
    7、删除记录
    
    
    db.test1.remove({"name":"yunweicai"})
    
    
    需要指定一个条件,没有条件是不允许删除操作的。
    '''

    参考:

    https://www.cnblogs.com/aademeng/articles/9779271.html

    https://baijiahao.baidu.com/s?id=1612042780837847633&wfr=spider&for=pc

  • 相关阅读:
    删除链表中的一个节点
    链表系列面试题1
    线程的5种状态
    红黑树 实现
    Java的SPI机制浅析与简单示例
    socket原理
    rabbitmq简单介绍
    MongoTemplate操作mongodb
    RJava配置
    浅析前后台分离
  • 原文地址:https://www.cnblogs.com/51python/p/10886835.html
Copyright © 2020-2023  润新知