1. 程式人生 > >python操作mongodb之pymongo

python操作mongodb之pymongo

tips of pymongo 主題詞:python ,mongodb , pymongo 簡介: MongoDB 是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。特點:高效能、易部署、易使用,儲存資料非常方便。優點有,儲存的檔案不需要任何結構定義,不同結構的檔案可以存在同一資料庫裡。支援完全索引,包含內部物件。       pymongo是python操作mongodb的一個庫。 1,Linux上安裝pymongo:  pip install pymongo
2,引入pymongo,建立連線 import pymongo client = pymongo.MongoClient('mongodb://localhost:27017') 現在常用的為:      from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017') 3,獲取資料庫     屬性獲取   db = client.test_database    字典獲取   db = client['test_database']   二選一 4,獲取collection    屬性獲取   collection = db.test_collection
   字典獲取   collection = db['test_collection']   二選一 : 對於資料庫和集合,在mongodb裡都是延遲建立,只有等到第一個資料插入的時候才會建立資料庫物件和集合 5,儲存資料  儲存資料的型別是字典型別,準確的說是BSON型別  在pymongo中使用字典來表示文件  insert(),insert_one()函式用來儲存資料 import datetime   post = {'author':'leah','text':'first','tags':['mongodb','python','pymongo'],                'date':datetime.datetime.utcnow()}
  document1 = {'x':1}   posts = db.posts   post_1 = posts.insert(post)   post_2 = posts.insert_one(document1).inserted_id       #post_2 = posts.insert(document1)輸出結果不變   print type(post_1)   print type(post_2) 輸出結果為: <class 'bson.objectid.ObjectId'> <class 'bson.objectid.ObjectId'> .inserted_id將返回ObjectId物件,若不加
輸出結果為: <class 'bson.objectid.ObjectId'> <class 'pymongo.results.InsertOneResult'> insert_many()用來插入多個文件(字典):   new_document = [{'x':3},  {'x':4}]    post_3 = posts.insert_many(new_document) 6,查詢資料 find_one()函式能夠從資料庫調出已經儲存的第一個資料    print posts.find_one() 輸出結果為:    {u'x': 1, u'_id': ObjectId('591124f9f5bf486e2f360727')} 可以通過遍歷的方式獲取全部資料:     for data in posts.find():      print data 指定嵌入文件中的欄位的查詢條件,需要使用點操作符。       posts.find({"grades.score": {"$gt": 30}})分數大於30的查詢       大於($gt)操作符,小於($lt)操作符,   $or或,$lte 小於等於, $gte大於等於 ,$ne不等於       posts.find(  {"$or": [{"cuisine": "Italian"}, {"address.zipcode": "10075"}]})       若要對查詢結果排序,追加sort()方法 7,更新資料 update_one()更新一個數據 update_many()更新多個數據       posts.update_one({'x':1},{'$set':{'x':100}}) $set 修改器用來指定一個鍵的值.如果這個鍵存在,就修改它;不存在,就建立它. posts.update_one({'x':100},{'$inc':{'x':-6}})                     x會變成94 $inc 修改器後跟的資料若沒有就新增,若有,數值為正就加,為負就減。$inc只能用於整數、長整數和雙精度浮點數。 (更細節更多的修改器內容待新增) 8,刪除資料 delete_one()刪除一個數據 delete_many()刪除多個數據 drop()方法銷燬一個集合 9,計數       posts.count()