一、鏈接資料庫
# 鏈接資料庫se7en521是賬號,123456是密碼,211.159.185.88是地址,27017是埠號
client = MongoClient('mongodb://se7en521:[email protected]:27017')
# 指定需要鏈接的資料庫
mongo_DB = client['video']
# 指定需要操作的資料庫中的表
video_old = mongo_DB.video_old
二、增
一、增(插入單條,系統已經不推薦使用)
result1 = video_old.insert({'vid':'10086','category':"111.1.1_1.1",'type':'3','title':'test'})
print('result1=%s'%result1)
print(type(result1))
# 型別是ObjectID型別,及回傳值是_id
# result1 = 5ee2e5585979c83dd911d1ca
# <class 'bson.objectid.ObjectId'>
二、增(插入多條,系統已經不推薦使用)
result2 = video_old.insert([{'vid':'10087','category':"111.1.1_1.2",'type':'3','title':'test'},{'vid':'10088','category':"111.1.1_1.3",'type':'3','title':'test'}])
print('result2=%s' % result2)
print(type(result2))
# 回傳結果是個陣列,陣列里面包含的插入的多個資訊的_id
# result2 = [ObjectId('5ee2e638c9f38c53aaf5728b'), ObjectId('5ee2e638c9f38c53aaf5728c')]
# <class 'list'>
三、增(插入單條,系統推薦)
result3 = video_old.insert_one({'vid':'10089','category':"111.1.1_1.4",'type':'3','title':'test'})
print('result3=%s'%result3)
print(type(result3))
# 要想驗證增加成功與否可以使用result3.inserted_id是否有值判斷
print('result3.inserted_id=%s'%result3.inserted_id)
print(type(result3.inserted_id))
# result3 = < pymongo.results.InsertOneResult object at0x7fc103890a88 >
# <class 'pymongo.results.InsertOneResult'>
# result3.inserted_id = 5ee2e813e39c4604c798d7c4
# <class 'bson.objectid.ObjectId'>
四、增(插入多條,系統推薦)
result4 = video_old.insert_many([{'vid':'10090','category':"111.1.1_1.5",'type':'3','title':'test'},{'vid':'10091','category':"111.1.1_1.6",'type':'3','title':'test'}])
print('result4=%s'%result4)
print(type(result4))
print('result4.inserted_ids=%s'%result4.inserted_ids)
print(type(result4.inserted_ids))
# result4 = < pymongo.results.InsertManyResult object at 0x7fd32f090c08 >
# <class 'pymongo.results.InsertManyResult'>
# result4.inserted_ids = [ObjectId('5ee2e9cc29bd0886c0d6c836'), ObjectId('5ee2e9cc29bd0886c0d6c837')]
# <class 'list'>
三、查
五、查詢(查詢一個,如果有多個滿足情況的,回傳第一個)
result5 = video_old.find_one({'type':'3'})
print('result5=%s'%result5)
print(type(result5))
# result5 = {'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test'}
# <class 'dict'>
六、查詢(多個)
result6=video_old.find({'type':'3'})
print('result6=%s'%result6)
print('type=%s'%type(result6))
# result6 = < pymongo.cursor.Cursor object at 0x7f9ad488f7f0 >
# type = <class 'pymongo.cursor.Cursor'>
# 注意一、回傳結果是Cursor型別,相當于一個生成器,我們需要遍歷取到所有的結果,每一個結果都是字典型別,
# 注意二、該函式沒有find_many(),而是就是find()
七、統計
result7 = video_old.find({'type':'3'}).count()
print('result7=%d'%result7)
# result7 = 6
八、排序
result8 = video_old.find({'type':'3'}).sort('vid',pymongo.DESCENDING) #
result8_list = [u for u in result8]
print('result8_list=%s'%result8_list)
# result8_list = [
# {'_id': ObjectId('5ee2e9cc29bd0886c0d6c837'), 'vid': '10091', 'category': '111.1.1_1.6', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e9cc29bd0886c0d6c836'), 'vid': '10090', 'category': '111.1.1_1.5', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e813e39c4604c798d7c4'), 'vid': '10089', 'category': '111.1.1_1.4', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e638c9f38c53aaf5728c'), 'vid': '10088', 'category': '111.1.1_1.3', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e638c9f38c53aaf5728b'), 'vid': '10087', 'category': '111.1.1_1.2', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test'}]
九、偏移
# result9 = video_old.find({'type':'3'}).skip(3)
# result9_list = [u for u in result9]
# print('result9_list=%s'%result9_list)
# result9_list = [
# {'_id': ObjectId('5ee2e813e39c4604c798d7c4'), 'vid': '10089', 'category': '111.1.1_1.4', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e9cc29bd0886c0d6c836'), 'vid': '10090', 'category': '111.1.1_1.5', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e9cc29bd0886c0d6c837'), 'vid': '10091', 'category': '111.1.1_1.6', 'type': '3','title': 'test'}]
十、限制數量
# result10 = video_old.find({'type':'3'}).limit(3)
# result10_list = [u for u in result10]
# print('result10_list=%s'%result10_list)
# result10_list=[{'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e638c9f38c53aaf5728b'), 'vid': '10087', 'category': '111.1.1_1.2', 'type': '3','title': 'test'},
# {'_id': ObjectId('5ee2e638c9f38c53aaf5728c'), 'vid': '10088', 'category': '111.1.1_1.3', 'type': '3','title': 'test'}]
四、更新
十一、更新(update)
result11 = video_old.update({'vid':'10086'},{'$set':{'title':'test1'}})
result111 = video_old.find_one({'vid':'10086'})
print('result11=%s'%result11)
print('result11.get(n)=%d'%result11.get('n'))
print('result111=%s'%result111)
print('type=%s'%type(result11))
1、更新成功
# result11 = {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}
# result111 = {'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test1'}
# type = <class 'dict'>
2、同樣成功,但是沒有改的的情況
# result11 = {'n': 1, 'nModified': 0, 'ok': 1.0, 'updatedExisting': True}
# result111 = {'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test1'}
# type = <class 'dict'>
3、更新目標不存在,更新失敗的情況
# result11 = {'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}
# result111 = {'_id': ObjectId('5ee2e5585979c83dd911d1ca'), 'vid': '10086', 'category': '111.1.1_1.1', 'type': '3','title': 'test1'}
# type = <class 'dict'>
# 回傳結果是字典形式,ok即代表執行成功(因為ok僅代表陳述句執行成功,不代表更新成功,所以不能用ok判斷更新是否成功),
# nModified代表影響的資料條數(就像第2中情況,同樣更新成功,只是更新的內容和原來一樣,nModified就為0,所以也不能當做判斷條件),
# n=1表示成功,n=0表示失敗,可以當做判斷條件
# updatedExisting表示更新目標是否存在,就算存在也有可能更新失敗,所以也不推薦當做判斷條件
# 十二、更新(update_one)
result12 = video_old.update_one({'vid':'10087'},{'$set':{'title':'test1'}})
result121 = video_old.find_one({'vid':'10087'})
print('result12=%s' % result12)
print('result12.matched_count=%s'%result12.matched_count)
print('result12.modified_count=%s'%result12.modified_count)
print('result12.upserted_id=%s'%result12.upserted_id)
print('result12.raw_result=%s'%result12.raw_result)
print('result12.row_result.get(n)=%s'%result12.raw_result.get('n'))
print('result121=%s' % result121)
print('type=%s' % type(result12))
# 情況1、更新資料和原資料不一樣,更新成功
# result12 = < pymongo.results.UpdateResult object at 0x7f9286877b88 >
# result12.matched_count = 1 可以使用該值判斷更新是否成功
# result12.modified_count = 1
# result12.upserted_id = None
# result12.raw_result = {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}
# result121 = {'_id': ObjectId('5ee2e638c9f38c53aaf5728b'), 'vid': '10087', 'category': '111.1.1_1.2','type': '3', 'title': 'test1'}
# type = <class 'pymongo.results.UpdateResult'>
# 情況2
# result12 = < pymongo.results.UpdateResult object at 0x7f9286877688 >
# result12.matched_count = 1
# result12.modified_count = 0
# result12.upserted_id = None
# result12.raw_result = {'n': 1, 'nModified': 0, 'ok': 1.0, 'updatedExisting': True}
# result121 = {'_id': ObjectId('5ee2e638c9f38c53aaf5728b'), 'vid': '10087', 'category': '111.1.1_1.2','type': '3', 'title': 'test1'}
# type = <class 'pymongo.results.UpdateResult'>
十三、更新(update_many)
result13 = video_old.update_many({'title':'test1'},{'$set':{'title':'test2'}})
print('result13=%s' % result13)
print('result13.matched_count=%s' % result13.matched_count)
print('result13.modified_count=%s' % result13.modified_count)
print('result13.upserted_id=%s' % result13.upserted_id)
print('result13.raw_result=%s' % result13.raw_result)
print('result13.row_result.get(n)=%s' % result13.raw_result.get('n'))
print('type=%s' % type(result13))
# result13 = < pymongo.results.UpdateResult object at 0x7faaff996ac8 >
# result13.matched_count = 2 使用改資料不為0判斷更新成功
# result13.modified_count = 2
# result13.upserted_id = None
# result13.raw_result = {'n': 2, 'nModified': 2, 'ok': 1.0, 'updatedExisting': True}
# result13.row_result.get(n) = 2
# type = <class 'pymongo.results.UpdateResult'>
五、洗掉
十四、洗掉(remove)
result14 = video_old.remove({'title':'test2'})
print(result14)
# {'n': 1, 'ok': 1.0} 可以根據n值不為0判斷洗掉成功
# {'n': 0, 'ok': 1.0}
# {'n': 2, 'ok': 1.0}
十五、洗掉(delete_one)
result15 = video_old.delete_one({'vid':'10088'})
print('result15=%s'%result15)
print('type=%s'%type(result15))
print('result15.deleted_count=%d'%result15.deleted_count)
print('result15.raw_result=%s'%result15.raw_result)
# result15 = < pymongo.results.DeleteResult object at 0x7fe6af999688 >
# type = <class 'pymongo.results.DeleteResult'>
# result15.deleted_count = 1 可以使用該值不為0判斷洗掉是否成功
# result15.raw_result = {'n': 1, 'ok': 1.0}
# 十六、洗掉(delete_many)
result16 = video_old.delete_many({'title': 'test'})
print('result16=%s' % result16)
print('type=%s' % type(result16))
print('result16.deleted_count=%d' % result16.deleted_count)
print('result16.raw_result=%s' % result16.raw_result)
# result16 = < pymongo.results.DeleteResult object at 0x7fc709954f48 >
# type = <class 'pymongo.results.DeleteResult'>
# result16.deleted_count = 3 可以使用該值不為0判斷洗掉是否成功
# result16.raw_result = {'n': 3, 'ok': 1.0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107520.html
標籤:Python
