連接數據庫
MongoClient VS Connection
class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB. | | Method resolution order: | MongoClient | pymongo.common.BaseObject | __builtin__.object |class Connection(pymongo.mongo_client.MongoClient) | Connection to MongoDB. | | Method resolution order: | Connection | pymongo.mongo_client.MongoClient | pymongo.common.BaseObject | __builtin__.object
從這兩個類的繼承來看,connection是繼承了MongoClient的,建議使用MongoClient而不是使用Connection。(也就是說,MongoClient可以使用方法Connection都可以使用)
from pymongo import MongoClientclient = MongoClient('192.168.40.87', 27037)db_name = 'TCL_Useraction'db = client[db_name]collection_useraction = db['useraction']
這里是通過字典的方式訪問數據庫和集合,同時你也可以通過.(點號)的方式訪問
插入數據
save() VS insert()
mongodb的save和insert函數都可以向collection里插入數據,但兩者是有兩個區別:
一、save函數實際就是根據參數條件,調用了insert或update函數.如果想插入的數據對象存在,insert函數會報錯,而save函數是改變原來的對象;如果想插入的對象不存在,那么它們執行相同的插入操作.這里可以用幾個字來概括它們兩的區別,即所謂"有則改之,無則加之".
二、insert可以一次性插入一個列表,而不用遍歷,效率高, save則需要遍歷列表,一個個插入。
更新數據
對于單個數據來說,可以更新后使用save方法
update(criteria, objNew, upsert, mult)
criteria: 需要被更新的條件表達式
objNew: 更新表達式
upsert: 如目標記錄不存在,是否插入新文檔。
multi: 是否更新多個文檔。
collection_useraction.update({'gid':last_gid, 'time':l_date}, {'$set':{'gid':last_gid}, '$set':{'time':l_date}, '$addToSet':{'categories':category_data}}, upsert=True)
刪除數據
db.users.drop() # 刪除集合remove(self, spec_or_id=None, safe=None, multi=True, **kwargs)# remove() 用于刪除單個或全部文檔,刪除后的文檔無法恢復。id = db.users.find_one({"name":"user2"})["_id"]db.users.remove(id) # 根據 id 刪除一條記錄db.users.remove() # 刪除集合里的所有記錄db.users.remove({'yy':5}) # 刪除yy=5的記錄查詢
5. 查詢
# 查詢 age 小于 15 的 for u in db.users.find({"age":{"$lt":15}}): print u 5.1 查詢一條記錄
# 查詢 name 等于 user8 的 for u in db.users.find({"name":"user8"}): print u # 獲取查詢的一個 u2 = db.users.find_one({"name":"user9"}) # 查不到時返回 None print u2
新聞熱點
疑難解答