PyMongo安装使用笔记

546次阅读  |  发布于5年以前

这里是简单的安装和使用记录,首先要有一个可用的mongo环境,win环境或者linux环境都可以。 假定你对mongo有所了解和知道一些命令行操作。

安装和更新
跟大多数py包安装一样,可以源码安装,也可以使用pip或者easy_install来安装

安装

复制代码 代码如下:

pip install pymongo

升级

复制代码 代码如下:

pip install --upgrade pymongo

其他安装方法请参照文档pymongo安装

操作

官网教程

小案例

复制代码 代码如下:

-- coding: utf-8 --

python2.7x

author: orangleliu @2014-09-24

'''
pymongo的简单使用
'''

from pymongo import MongoClient

def get_db():

建立连接

client = MongoClient("localhost", 27017)  
#test,还有其他写法  
db = client.test  
return db

def get_collection(db):

选择集合(mongo中collection和database都是lazy创建的,具体可以google下)

collection = db['posts']  
print collection

def insert_one_doc(db):

插入一个document

posts = db.posts  
post = {"name":"lzz", "age":25, "weight":"55"}  
post_id = posts.insert(post)  
print post_id

def insert_mulit_docs(db):

批量插入documents,插入一个数组

posts = db.posts  
post = [ {"name":"nine", "age":28, "weight":"55"},  
             {"name":"jack", "age":25, "weight":"55"}]  
obj_ids = posts.insert(post)  
print obj_ids

查询,可以对整个集合查询,可以根ObjectId查询,可以根据某个字段查询等

def get_all_colls(db):

获得一个数据库中的所有集合名称

print db.collection_names()

def get_one_doc(db):

有就返回一个,没有就返回None

posts = db.posts  
print posts.find_one()  
print posts.find_one({"name":"jack"})  
print posts.find_one({"name":"None"})  
return

def get_one_by_id(db):

通过objectid来查找一个doc

posts = db.posts  
obj = posts.find_one()  
obj_id = obj["_id"]  
print "_id 为ObjectId类型 :"  
print posts.find_one({"_id":obj_id})  
#需要注意这里的obj_id是一个对象,不是一个str,使用str类型作为_id的值无法找到记录  
print "_id 为str类型 "  
print posts.find_one({"_id":str(obj_id)})

#可以通过ObjectId方法把str转成ObjectId类型  
from bson.objectid import ObjectId  
print "_id 转换成ObjectId类型"  
print posts.find_one({"_id":ObjectId(str(obj_id))})

def get_many_docs(db):

mongo中提供了过滤查找的方法,可以通过各

#种条件筛选来获取数据集,还可以对数据进行计数,排序等处理  
posts = db.posts  
#所有数据,按年龄排序, -1是倒序  
all =  posts.find().sort("age", -1)

count = posts.count()  
print "集合中所有数据 %s个"%int(count)  
for i in all:  
    print i

#条件查询  
count = posts.find({"name":"lzz"}).count()  
print "lzz: %s"%count  
for i in  posts.find({"name":"lzz", "age":{"$lt":20}}):  
    print i

def clear_coll_datas(db):

清空一个集合中的所有数据

db.posts.remove({})

if name == "main":
db = get_db()
obj_id = insert_one_doc(db)
obj_ids = insert_mulit_docs(db)

get_all_colls(db)

#get_one_doc(db)  
#get_one_by_id(db)  
#get_many_docs(db)  
clear_coll_datas(db)  

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8