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}})
  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/chenxi188/p/10572722.html
Copyright © 2011-2022 走看看