• pymongo


    pymongo 使用

    连接
    # authMechanism传输协议,
    # authSource认证库,管理员需要对admin做认证,才能操作其他db
    # use_db, use_col,操作数据的库和集合
    def db_connected(db='news_spider', col=None,):
        uri = "mongodb://root:gtl1023@192.168.1.200/?authSource=admin&authMechanism=SCRAM-SHA-1"
        client = MongoClient(uri)
        use_db = client[db]
        if col is not None:
            use_col = use_db[col]
            return use_col
        return use_db
    
    
    查询

    1, 查库名

    db = db_connected()
    for i in db.collection_names():print(i)
    

    2, 查集合名(相当于mysql中的表)

    db = MongoClient(uri)
    for i in db.list_database_names():print(i)
    

    3, 查数据

    所有数据
    col = db_connected(col='test')
    for i in col.find(): print(i)
    

    4,指定字段查询(显示指定的key-value,将要显示的key设置为1)

    for i in col.find({},{'news_time': 1, 'news_link': 1, 'news_author' : 1, 'news_source':1}): print(i)
    

    5,查找条目(返回符合条件的整条数据)

    myquery = {'news_time': '2018-07-23'}
    for i in col.find(myquery): print(i)
    

    6, 正则查询

    myquery = {'news_title': { '$regex': '^EOS'}}   #查询所有标题以EOS开始的新闻
    for i in col.find(myquery): print(i)
    

    7, 返回结果限制(如果条目太多,可以多次返回,每次限制多少条)

    myquery = {'news_title': { '$regex': '^EOS'}}
    for i in col.find(myquery).limit(2): print(i)
    
    插入数据

    1, 插入单条数据,insert_one方法会返回一个值 对应数据库中的_id

    test_data = {'name':'tom', 'job': 'ops'}
    col = db_connected(col='test')
    res = col.insert_one(test_data)
    print(res.inserted_id)
    

    2, 插入多条数据

    test_list = [{'name':'tom', 'job': 'ops'},{'name':'jerry', 'job': 'dev'}]
    col = db_connected(col='test')
    res = col.insert_many(test_list)
    print(res.inserted_ids)
    

    3, 插入指定id

    est_list = [{'_id':100, 'name':'tom', 'job': 'ops'},{'_id':99, 'name':'jerry', 'job': 'dev'}]
    col = db_connected(col='test')
    res = col.insert_many(test_list)
    print(res.inserted_ids)
    
    修改数据

    1, 修改单条(默认修改找到的第一条)

    col = db_connected(col='test')
    myquery = {'name':'tom'}
    new_val = {'$set':{'name':'tomson'}}
    col.update_one(myquery,new_val)
    for i in col.find():print(i)
    

    2, 修改所有符合条件的值

    col = db_connected(col='test')
    myquery = {'name':'tom'}
    new_val = {'$set':{'name':'tomson'}}
    col.update_many(myquery,new_val)
    for i in col.find():print(i)
    
    排序,默认正序, 参数输入-1取反
    col = db_connected(col='test')
    for i in col.find().sort('name', -1):print(i)
    
    删除数据

    1, 删除指定单条

    col = db_connected(col='test')
    myquery = {'job':'dev'}
    col.delete_one(myquery)
    for i in col.find():print(i)
    

    2, 删除多条

    col = db_connected(col='test')
    myquery = {'job':'ops'}
    col.delete_many(myquery)
    for i in col.find():print(i)
    

    3, 删除集合中所有数据

    col = db_connected(col='test')
    col.delete_many({})
    for i in col.find():print(i)
    

    4, 删除集合本身

    col = db_connected(col='test')
    col.drop()
    db = db_connected()
    for i in db.collection_names():print(i)
    
  • 相关阅读:
    Yii2中如何使用CodeCeption
    切换composer国内镜像 Laravel China停用,切换阿里云composer全量镜像
    mysql 不同库不同表字段数据复制
    DataGridView绑定数据库,取得的数据插入到DataGridView指定列(一)
    Winform在一个窗体获取其他窗体的值
    winform按钮和子按钮
    C#生成唯一的ID保存到数据库
    C#Winform从页面获取数据,传入数据库
    C#winform省市县联动,以及有的县是空值时显示异常的处理
    VS2010连接SQLite数据库
  • 原文地址:https://www.cnblogs.com/ops-sylar/p/9360219.html
Copyright © 2020-2023  润新知