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)