杭州市建设工程造价管理协会网站,深圳品牌vi设计,重庆平台,网络营销解决方案1. mongdb和python交互的模块
pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo
2. 使用pymongo
2.1 导入pymongo并选择要操作的集合 数据库和集合能够自动创建 2.1.1 无需权限认证的方式创建连接对象以及集合操作对象
from pymongo import Mong…1. mongdb和python交互的模块
pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo
2. 使用pymongo
2.1 导入pymongo并选择要操作的集合 数据库和集合能够自动创建 2.1.1 无需权限认证的方式创建连接对象以及集合操作对象
from pymongo import MongoClientclient MongoClient(host,port) # 如果是本地连接host,port参数可以省略collection client[db名][集合名]
# collection client.db名.集合名 # 与上边用法相同2.1.2 需要权限认证的方式创建连接对象以及集合操作对象
from pymongo import MongoClient
from urllib.parse import quote_plususer python # 账号
password python # 密码
host 127.0.0.1 # host
port 27017 # port
uri mongodb://%s:%s%s % (quote_plus(user),quote_plus(password),host)
# quote_plus函数对url进行编码
# uri mongodb://python:python127.0.0.1
client MongoClient(uri, portport)
collection client.db名.集合名2.2 insert()添加数据 insert可以批量的插入数据列表也可以插入一条数据 collection.insert({一条数据})
collection.insert([{数据一},{数据二}])2.2.1 添加一条数据 返回插入数据的_id ret collection.insert({name:test10010,age:33})
print(ret)2.2.2 添加多条数据 返回ObjectId对象构成的列表 item_list [{name:test1000{}.format(i)} for i in range(10)]
rets collection.insert(item_list)
print(rets)
for ret in rets:print(ret)2.3 find_one()查找一条数据 接收一个字典形式的条件返回字典形式的整条数据 如果条件为空则返回第一条 ret client.test.test.find_one({name: test10001})
print(ret) # 包含mongodb的ObjectId对象的字典
_ ret.pop(_id) # 清除mongodb的ObjectId对象的k,v
print(ret) 2.4 find()查找全部数据 返回所有满足条件的结果如果条件为空则返回全部 结果是一个Cursor游标对象是一个可迭代对象可以类似读文件的指针但是只能够进行一次读取 rets collection.find({name:test10005})
for ret in rets:print(ret)
for ret in rets: #此时rets中没有内容print(ret)2.5 update()更新数据(全文档覆盖或指定键值更新一条或多条)
语法collection.update({条件}, {‘$set’:{指定的kv或完整的一条数据}}, multiFalse/True, upsertFalse/True)multi参数默认为False,表示更新一条; multiTrue则更新多条; multi参数必须和$set一起使用upsert参数默认为False; upsertTrue则先查询是否存在,存在则更新;不存在就插入$set表示指定字段进行更新
2.5.1 更新一条数据全文档覆盖存在就更新不存在就插入
data {msg:这是一条完整的数据1,name:哈哈}
client.test.test.update({haha: heihei}, {$set:data}, upsertTrue)2.5.2 更新多条数据全文档覆盖存在就更新不存在就插入
data {msg:这是一条完整的数据2,name:哈哈} # 该完整数据是先查询后获取的
client.test.test.update({}, {$set:data}, multiTrue, upsertTrue)2.5.3 更新一条数据指定键值存在就更新不存在就插入
data {msg:指定只更新msg___1}
client.test.test.update({}, {$set:data}, upsertTrue)2.5.4 更新多条数据指定键值存在就更新不存在就插入
data {msg:指定只更新msg___2}
client.test.test.update({}, {$set:data}, multiTrue, upsertTrue)2.6 delete_one()删除一条数据
collection.delete_one({name:test10010})2.7 delete_many()删除全部数据
collection.delete_many({name:test10010})3. pymongo模块其他api 查看pymongo官方文档或源代码 http://api.mongodb.com/python/current/