pymongo的使用

開始以前咱們先建立數據庫test,在test下面建立兩個聚類:student_info和teacher_info,並寫入數據數據庫

import pymongo

client = pymongo.MongoClient('localhost', 27017)
test = client['test']
student_info = test['student_info']
teacher_info = test['teacher_info']



student_infos = [{'name':'小明','age':12,'city':'廣州','hobby':['足球','遊戲']},
                 {'name':'小李','age':11,'city':'北京','hobby':['籃球']},
                 {'name':'小張','age':9,'city':'上海','hobby':['吃飯','睡覺','發呆']},
                 {'name':'小麗','age':12,'city':'蘇州','hobby':['音樂']},
                 {'name':'小紅','age':8,'city':'南京','hobby':['讀書']}]

for i in student_infos:
    student_info.insert_one({'name':i['name'],'city':i['city'],'age':i['age'],'hobby':i['hobby']})



teacher_infos = [{'name':'張老師','age':23,'city':'廣州','subject':'語文'},
                 {'name':'王老師','age':35,'city':'深圳','subject':'英語'},
                 {'name':'李老師','age':45,'city':'哈爾濱','subject':'數學'},
                 {'name':'陳老師','age':38,'city':'蘇州','subject':'物理'},
                 {'name':'黃老師','age':28,'city':'蘭州','subject':'體育'}]

for i in teacher_infos:
    teacher_info.insert_one({'name':i['name'],'city':i['city'],'age':i['age'],'subject':i['subject']})

這樣咱們獲得了一個包含兩個聚類的數據庫test,兩個聚類以下:spa

1.連接數據庫和聚類

# 鏈接MongoDB
client = pymongo.MongoClient('localhost', 27017)

# 鏈接數據庫test
test = client['test']
# 也可寫成這種形式
test = client.test

2.查看所有彙集名稱(collection_names)

# 查看數據庫test中所有彙集名稱
print(test.collection_names())

結果:3d

['system.indexes', 'student_info', 'teacher_info']

3.查看彙集的一條記錄(find_one)

# 查看彙集student_info中的一條記錄
print(test.student_info.find_one())

結果:code

{'hobby': ['足球', '遊戲'], '_id': ObjectId('571c522513d59412f4cbf78c'), 'name': '小明', 'age': 12, 'city': '廣州'}

 

# 查看聚類中'age'字段爲12的一條記錄(若有多條只顯示第一條)
print(test.student_info.find_one({'age':12}))

結果:blog

{'age': 12, 'hobby': ['足球', '遊戲'], 'name': '小明', 'city': '廣州', '_id': ObjectId('571c522513d59412f4cbf78c')}

4.查看彙集的字段(find_one)

# 前一個字典爲查詢條件,後一個字典爲展現的字段
# 不寫查詢條件返回所有記錄
for i in test.student_info.find({},{"name":1}):
    print(i)

結果:排序

{'name': '小明', '_id': ObjectId('571c9aae13d59423b8bef633')}
{'name': '小李', '_id': ObjectId('571c9aae13d59423b8bef634')}
{'name': '小張', '_id': ObjectId('571c9aae13d59423b8bef635')}
{'name': '小麗', '_id': ObjectId('571c9aae13d59423b8bef636')}
{'name': '小紅', '_id': ObjectId('571c9aae13d59423b8bef637')}

 

# 由於默認會返回'_id'字段,不要顯示'_id'字段時能夠這樣寫:
for i in test.student_info.find({},{"name":1,'_id':0}):
    print(i)

結果:索引

{'name': '小明'}
{'name': '小李'}
{'name': '小張'}
{'name': '小麗'}
{'name': '小紅'}

 

# 查找'age'爲12的記錄,返回它的'name'的值
for i in test.student_info.find({'age':12},{"name":1,'_id':0}):
    print(i)

結果:遊戲

{'name': '小明'}
{'name': '小麗'}

 

 

 

5.查看彙集的多條記錄(find)

# 查看彙集的多條記錄
for i in test.student_info.find():
    print(i)

結果:ci

{'city': '廣州', 'hobby': ['足球', '遊戲'], 'age': 12, '_id': ObjectId('571c522513d59412f4cbf78c'), 'name': '小明'}
{'city': '北京', 'hobby': ['籃球'], 'age': 11, '_id': ObjectId('571c522513d59412f4cbf78d'), 'name': '小李'}
{'city': '上海', 'hobby': ['吃飯', '睡覺', '發呆'], 'age': 9, '_id': ObjectId('571c522513d59412f4cbf78e'), 'name': '小張'}
{'city': '蘇州', 'hobby': ['音樂'], 'age': 12, '_id': ObjectId('571c522513d59412f4cbf78f'), 'name': '小麗'}
{'city': '南京', 'hobby': ['讀書'], 'age': 8, '_id': ObjectId('571c522513d59412f4cbf790'), 'name': '小紅'}

 

# 查看'age'值爲12的所有記錄
for i in test.student_info.find({'age':12}):
    print(i)

結果:數學

{'_id': ObjectId('571c522513d59412f4cbf78c'), 'city': '廣州', 'hobby': ['足球', '遊戲'], 'age': 12, 'name': '小明'}
{'_id': ObjectId('571c522513d59412f4cbf78f'), 'city': '蘇州', 'hobby': ['音樂'], 'age': 12, 'name': '小麗'}

 6.查看彙集的記錄統計(count,distinct)

# 查看彙集的總數
print(test.student_info.find().count())

結果:

5

查看聚類中某個鍵的全部值

# 查看聚類中某個鍵的全部值
print(test.student_info.distinct('city'))

結果:

['廣州', '北京', '上海', '蘇州', '南京']

 

7.彙集查詢結果排序(sort)

# 默認爲升序
for i in test.student_info.find().sort("age"):
    print(i)

# 升序
for i in test.student_info.find().sort("age",pymongo.ASCENDING):
    print(i)

# 降序
for i in test.student_info.find().sort("age",pymongo.DESCENDING):
    print(i)

彙集查詢結果多列排序

for i in test.student_info.find().sort([("age",pymongo.ASCENDING),("name",pymongo.DESCENDING)]):
    print(i)

8.添加記錄(insert_one,insert_many)

# 添加記錄
 test.student_info.insert_one({'name':'小白'})

 

# 用迭代來添加記錄
name_list = ['小A','小B','小C']
test.student_info.insert_many({'name':i} for i in name_list)

name_list = ['小x','小y','小z']
age_list = [10,11,12]
test.student_info.insert_many({'name':i,'age':j} for i in name_list for j in age_list)

9.修改記錄(update_one,update_one)

修改一條記錄:

# 找出'age'值爲12的記錄,把這些記錄的第一條的'age'值改成100(注意:本用法只修改一條記錄)
test.student_info.update_one({'age': 12}, {'$set': {'age': 100}})

修改多條記錄:

# 找出'age'值爲100的記錄,把這些記錄的'age'值改成12(注意:本方法修改全部符合條件的記錄)
test.student_info.update_many({'age': 100}, {'$set': {'age': 12}})

小技巧:修改所有記錄:

# 以_id爲索引,遍歷所有記錄,並把每一條的'age'值修改成:100
for i in test.student_info.find():
    test.student_info.update_one({'_id':i['_id']}, {'$set': {'age': 100}})

 

 

10.刪除記錄(delete_one,delete_many)

刪除一條記錄:

# 刪除第一條'name'值爲'小明'的記錄
test.student_info.delete_one({'name':'小明'})

刪除多條記錄:

# 刪除所有'age'值爲12的記錄
test.student_info.delete_many({'age':12})

 11.替換記錄(replace_one)

替換一條記錄:

# 找出'city'值爲'北京'的記錄,替換爲'hometown':'廊坊',注意:是替換記錄內的所有內容,並不是只是替換'city'字段
test.student_info.replace_one({'city':'北京'},{'hometown':'廊坊'})

for i in test.student_info.find({'hometown':'廊坊'}):
     print(i)

結果:

{'_id': ObjectId('571c901b13d5942564a5a23e'), 'hometown': '廊坊'}

12.刪除聚類

# 刪除聚類
test.student_info.drop()
相關文章
相關標籤/搜索