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)