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)

 

posted @ 2017-07-17 16:34  橙云生  阅读(281)  评论(1编辑  收藏  举报