zoukankan      html  css  js  c++  java
  • mongoDB的使用A

    一、【连接mongo服务】、【连接数据库】、【连接集合】

    #一.【连接Mongo】
    import pymongo
    #方法一
    client = pymongo.MongoClient(host='localhost', port=27017)
    #方法二
    client = MongoClient('mongodb://localhost:27017/')
    
    #二.【连接mongo指定数据库’test ‘】: #方法一 db = client.test #方法二 db = client['test']
    #三.【连接指定集合(Collection)如:students】 #方法一 collection = db.students #方法二 collection = db['students']

    二、【插入数据新版本】在用:

    '''
    实际上在 PyMongo 3.X 版本中,insert() 方法官方已经不推荐使用了,当然继续使用也没有什么问题,官方推荐使用 insert_one() 和 insert_many() 方法将插入单条和多条记录分开
    '''
    # A.【insert_one()
    student = {
        'id': '20170101',
        'name': 'Jordan',
        'age': 20,
        'gender': 'male'
    }
    result = collection.insert_one(student)
    print(result)
    print(result.inserted_id)
    '''
    运行结果:
    <pymongo.results.InsertOneResult object at 0x10d68b558>
    5932ab0f15c2606f0c1cf6c5
    返回结果和 insert() 方法不同,这次返回的是InsertOneResult 对象,我们可以调用其 inserted_id 属性获取 _id
    '''
    
    #B.【insert_many() 方法,我们可以将数据以列表形式传递即可】
    student1 = {
        'id': '20170101',
        'name': 'Jordan',
        'age': 20,
        'gender': 'male'
    }
    student2 = {
        'id': '20170202',
        'name': 'Mike',
        'age': 21,
        'gender': 'male'
    }
    result = collection.insert_many([student1, student2])
    print(result)
    print(result.inserted_ids)
    '''
    insert_many() 方法返回的类型是 InsertManyResult,调用inserted_ids 属性可以获取插入数据的 _id 列表,运行结果:
    <pymongo.results.InsertManyResult object at 0x101dea558>
    [ObjectId('5932abf415c2607083d3b2ac'), ObjectId('5932abf415c2607083d3b2ad')]
    '''

    二、插入数据老版本(不建议用):

    #四.【插入数据,在students内,用字典】
    student = {
        'id': '20170101',
        'name': 'Jordan',
        'age': 20,
        'gender': 'male'
    }
    result = collection.insert(student)
    print(result)
    '''
    在 MongoDB 中,每条数据其实都有一个 _id 属性来唯一标识,如果没有显式指明 _id,MongoDB 会自动产生一个 ObjectId 类型的 _id 属性。insert() 方法会在执行后返回的 _id 值:
    5932a68615c2606814c91f3d
    '''
    
    #【插入多个字典数据,用列表把字典组合】: student1 = { 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male' } student2 = { 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male' } result = collection.insert([student1, student2]) print(result) ''' 返回的结果是对应的 _id 的集合,运行结果: [ObjectId('5932a80115c2606a59e8a048'), ObjectId('5932a80115c2606a59e8a049')] '''

     三、【查询一】用 find_one() 或 find() 方法进行查询,find_one() 查询得到是单个结果,find() 则返回一个生成器对象。

    result = collection.find_one({'name': 'Mike'})
    print(type(result))
    print(result)
    '''
    在这里我们查询 name 为 Mike 的数据,它的返回结果是字典类型,运行结果:<class 'dict'>
    {'_id': ObjectId('5932a80115c2606a59e8a049'), 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male'}
    可以发现它多了一个 _id 属性,这就是 MongoDB 在插入的过程中自动添加的。
    '''

    三、【查询二】单条数据查询

    from bson.objectid import ObjectId
    result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
    print(result)
    '''
    其查询结果依然是字典类型,运行结果:
    {'_id': ObjectId('593278c115c2602667ec6bae'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}'''

    三、【查询三】多条数据的查询,我们可以使用 find() 方法,例如在这里查找年龄为 20 的数据,示例如下:

    #
    results = collection.find({'age': 20})
    print(results)
    for result in results:
        print(result)
    '''
    运行结果:
    <pymongo.cursor.Cursor object at 0x1032d5128>
    {'_id': ObjectId('593278c115c2602667ec6bae'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}
    {'_id': ObjectId('593278c815c2602678bb2b8d'), 'id': '20170102', 'name': 'Kevin', 'age': 20, 'gender': 'male'}
    {'_id': ObjectId('593278d815c260269d7645a8'), 'id': '20170103', 'name': 'Harden', 'age': 20, 'gender': 'male'}
    '''

    如果要查询年龄大于 20 的数据,则写法如下:

    results = collection.find({'age': {'$gt': 20}})
  • 相关阅读:
    简单状态机
    c语言状态机
    存储公司
    正确跑步
    好好做自己能做的
    I2C学习
    es6 generator函数
    es6 for of 循环
    es6 proxy代理
    es6 Symbol类型
  • 原文地址:https://www.cnblogs.com/chenxi188/p/10572722.html
Copyright © 2011-2022 走看看