python操作mongodb

來源:互聯網
上載者:User

標籤:io   os   使用   資料   sp   cti   on   c   ad   

出於對mysql的天然不信任(不瞭解),準備嘗試些新東東,redis是記憶體資料庫有些瞭解,這回試試更有儲存感覺的mongodb

 

from pymongo import Connection

con = Connection()

connection = pymongo.Connection(‘localhost‘, 27017)

 

db = con.test # 資料庫名為test

posts = db.post

 

2     >>> post1 = {"title":"I Love Python",
 3          "slug":"i-love-python",
 4          "author":"SErHo",
 5          "content":"I LovePython....",
 6          "tags":["Love","Python"],
 7          "time":datetime.datetime.now()}

 

一條記錄就是一個 {} dic, 內有各種key, 對應value可以是函數值

 

posts.insert(post1)

 

把記錄存入資料庫

 

post = posts.find ()

尋找所有記錄

 

post.count()

得到所有記錄數

posts.find_one({"slug":"python-mongodb"})

 

尋找一條記錄

 

posts.update({"_id":post["_id"]},post)

 

更新一條記錄post

 

1     >>> posts.update({"_id":post["_id"]},{"$set":
2                    {"content":"TestUpdate SET...."}})

 

 

用 $set 更新一條記錄裡的一個key-value對中的value

 

>>> posts.update({"_id":post["_id"]},{"$inc":  {"views":1}})

 

$inc 給 記錄中的views對應值加1, 如果沒有views這個key 就建立,並賦值 1?

 

>>> posts.update({"_id":post["_id"]},{"$push":{"tags":"Test"}})

 

給數群組類型的值append一個值

 

2     >>> posts.update({"_id":post["_id"]},{"$addToSet":
3                           {"tags":{"$each":["Python","Each"]}}})

 

給數群組類型的值append一系列值,同時確保不會有重複值

 

1       >>> posts.update({"_id":post["_id"]},{"$pop":{"tags":1}})

 

將數群組類型的值pop出末尾的一個值,如果是{"$pop":{"tags":-1}}則pop出第一個

 

可以使用”$pull”來刪除數組中指定的值,它會刪除數組中所有匹配的值。如何修改其中的一個值呢?可以先刪除掉,再增加一個進去,還有就是直接定位修改。比如tags數組中,”Python”是第一個,想把它改成”python”,可以通過下標直接選擇,就是tags[0],然後使用上面 的”$set”等修改器,如果不確定可以使用$來定位:

1     >>> posts.update({"tags":"MongoDB"},{"$set":{"tags.$":"Hello"}})

這個將先搜尋tags中滿足”MongoDB”的,如果找到,就把它修改為”Hello”。可以看到上面的update這個函數已經有兩個參數了, 它還有第3個參數upsert,如果設為”True”,則如果沒有找到匹配的文檔,就會在匹配的基礎上建立一個文檔,具體執行個體就不講了。

 

批量插入

 

new_posts =[{"name":"a.payment.FakeInst.a","family":"FakeInst", "category":"惡意計費", "behavior":"後台發送計費簡訊"},{"name":"a.payment.Umeng.a","family":"Umeng", "category":"惡意計費", "behavior":"1. 後台從伺服器端擷取指令, 自動傳送簡訊,訂製計費服務,並攔截指定號碼簡訊。 2. 後台從伺服器端擷取指令,自動類比訪問廣告,消耗使用者流量"}]

malinfo.insert(new_posts)


Out[13]: [ObjectId(‘527281323387e31671aa91b2‘),ObjectId(‘527281323387e31671aa91b3‘)]

 

python操作mongodb

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.