1. 程式人生 > >python 模組 - pymongo模組

python 模組 - pymongo模組

 mongoDB 資料庫:

 

pymongo 操作:

import pymongo
# 連線mongo資料庫
client = pymongo.MongoClient(host='localhost', port=27017)

# 獲取應資料庫
db=client.text

# 獲取資料表
my_collection=db.col

#新增資料操作:(單條資料為 字典格式,多少條資料為 列表(字典)方式)
    # my_collection.insert(info)
    # 官方建議使用以下查詢:
    # my_collection.insert_one(info)
# my_collection.insert_many(info) # 查詢資料: # 大體跟直接在mongoDB查詢一致: #比較符 : # $lt小於{'age': {'$lt': 20}} # $gt大於{'age': {'$gt': 20}} # $lte小於等於{'age': {'$lte': 20}} # $gte大於等於{'age': {'$gte': 20}} # $ne不等於{'age': {'$ne': 20}} # $in在範圍內{'age': {'$in': [20, 23]}} # $nin不在範圍內{'age': {'$nin': [20, 23]}}
# 其他方式查詢: # 符號含義示例示例含義 # $regex匹配正則{'name': {'$regex': '^M.*'}}name以M開頭 # $exists屬性是否存在{'name': {'$exists': True}}name屬性存在 # $type型別判斷{'age': {'$type': 'int'}}age的型別為int # $mod數字模操作{'age': {'$mod': [5, 0]}}年齡模5餘0 # $text文字查詢{'$text': {'$search': 'Mike'}}text型別的屬性中包含Mike字串
# $where高階條件查詢{'$where': 'obj.fans_count == obj.follows_count'}自身粉絲數等於關注數 # 查詢所有資料: # date = my_collection.find() # 按條件查詢資料:(依據mongoDB 查詢資料一樣,只是關鍵詞需要引號包住) # date = my_collection.find({'sex':"男",'count':{'$gt':60}}) # 顯示前20條資料 # date = my_collection.find().limit(20) # 跳過前2條顯示20條資料 # date = my_collection.find().limit(20).skip(2) # 計數 # 要統計查詢結果有多少條資料,可以呼叫count()方法,如統計所有資料條數: # 排序 # 可以呼叫sort()方法,傳入排序的欄位及升降序標誌即可,示例如下: # 我們也可以直接根據ObjectId來查詢,這裡需要使用bson庫裡面的ObjectId。 # from bson.objectid import ObjectId # result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')}) # print(result) # 其查詢結果依然是字典型別,執行結果: # {' ObjectId('593278c115c2602667ec6bae'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'} # 當然如果查詢_id':結果不存在則會返回None。 # 更多查詢方法,詳見mongoDB CURD吧。 # 更新資料: # my_collection.update({條件名key:條件值},{修改的key:修改的值,}) # 官方建議使用以下查詢: # my_collection.update_one({'ID':3533821323},{"$set":{'name':'i123456',"count":22}}) # my_collection.update_many() # 刪除資料: # my_collection.remove({'ID':3533821323}) # # 官方建議使用以下查詢: # my_collection.delete_one() # my_collection.delete_many() # 需要知道的,查詢到的mongo資料型別為<class 'pymongo.cursor.Cursor'> # info = db.a1.find({"name":"a2"}).limit(10) # print(type(info)) #輸出結果為: <class 'pymongo.cursor.Cursor'> # 可以通過list方式,將cursor型別資料轉為列表資料: # info = list(db.a1.find({"name":"a2"}).limit(10)) # print(type(info)) # 輸出結果為: list()