python-pymongo使用

 1 #-*- coding: utf-8 -*-
 2 #python2.7x
 3 
 4 from pymongo import MongoClient
 5 
 6 def get_db():
 7     #創建鏈接
 8     client = MongoClient("localhost", 27017)
 9     #test,還有其餘寫法
10     db = client.test
11     return db
12 
13 def get_collection(db):
14     #選擇集合(mongo中collection和database都是lazy建立的,具體能夠google下)
15     collection = db['posts']
16     print collection
17 
18 def insert_one_doc(db):
19     #插入一個document
20     posts = db.posts
21     post = {"name":"lzz", "age":25, "weight":"55"}
22     post_id = posts.insert(post)
23     print post_id
24 
25 def insert_mulit_docs(db):
26     #批量插入documents,插入一個數組
27     posts = db.posts
28     post = [ {"name":"nine", "age":28, "weight":"55"},
29                  {"name":"jack", "age":25, "weight":"55"}]
30     obj_ids = posts.insert(post)
31     print obj_ids
32 
33 ##查詢,能夠對整個集合查詢,能夠根ObjectId查詢,能夠根據某個字段查詢等
34 def get_all_colls(db):
35     #得到一個數據庫中的全部集合名稱
36     print db.collection_names()
37 
38 def get_one_doc(db):
39     #有就返回一個,沒有就返回None
40     posts = db.posts
41     print posts.find_one()
42     print posts.find_one({"name":"jack"})
43     print posts.find_one({"name":"None"})
44     return
45 
46 def get_one_by_id(db):
47     #經過objectid來查找一個doc
48     posts = db.posts
49     obj = posts.find_one()
50     obj_id = obj["_id"]
51     print "_id 爲ObjectId類型 :"
52     print posts.find_one({"_id":obj_id})
53     #須要注意這裏的obj_id是一個對象,不是一個str,使用str類型做爲_id的值沒法找到記錄
54     print "_id 爲str類型 "
55     print posts.find_one({"_id":str(obj_id)})
56 
57     #能夠經過ObjectId方法把str轉成ObjectId類型
58     from bson.objectid import ObjectId
59     print "_id 轉換成ObjectId類型"
60     print posts.find_one({"_id":ObjectId(str(obj_id))})
61 
62 def get_many_docs(db):
63     #mongo中提供了過濾查找的方法,能夠經過各
64     #種條件篩選來獲取數據集,還能夠對數據進行計數,排序等處理
65     posts = db.posts
66     #全部數據,按年齡排序, -1是倒序
67     all =  posts.find().sort("age", -1)
68 
69     count = posts.count()
70     print "集合中全部數據 %s個"%int(count)
71     for i in all:
72         print i
73 
74     #條件查詢
75     count = posts.find({"name":"lzz"}).count()
76     print "lzz: %s"%count
77     for i in  posts.find({"name":"lzz", "age":{"$lt":20}}):
78         print i
79 
80 def clear_coll_datas(db):
81     #清空一個集合中的全部數據
82     db.posts.remove({})
83 
84 if __name__ == "__main__":
85     db = get_db()
86     obj_id = insert_one_doc(db)
87     obj_ids = insert_mulit_docs(db)
88     #get_all_colls(db)
89     #get_one_doc(db)
90     #get_one_by_id(db)
91     #get_many_docs(db)
92     clear_coll_datas(db)
相關文章
相關標籤/搜索