pymongo的用法总结
一、安装与更新
pip install pymongo # 常用安装 pip install pymongo==3.5.1 # 指定版本安装 pip install --upgrade pymongo # 更新安装
二、创建数据库、集合
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017") # 连接数据库 print(dbcon.database_names()) # 已存在的数据库 结果: ['admin', 'config', 'lion', 'local'] mydb = dbcon["lion"] # 选择lion数据库 print(mydb.collection_names()) # 已存在的集合 mycol = mydb["kzg_col"] # 选择集合
三、插入数据
1、插入单条数据(返回一个id)
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017") # 连接数据库 mydb = dbcon["lion"] # 选择lion数据库 mycol = mydb["kzg_col"] # 选择集合名 insertData = { "name": "RUNOOB2", "alexa": "10000", "url": "https://www.runoob.com" } ins = mycol.insert_one(insertData) # 插入一条数据 print(ins.inserted_id) 结果: 5d81f4961565d78070165d24
2、插入多条数据(返回多个id)
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.20.x.x:27017") # 连接数据库 mydb = dbcon["lion"] # 选择lion数据库 mycol = mydb["kzg_col"] # 选择集合名 mylist = [ { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" }, { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" }, { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" }, { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" }, { "name": "Github", "alexa": "109", "url": "https://www.github.com" } ] ins = mycol.insert_many(mylist) # 插入多条数据 print(ins.inserted_ids)
3、插入的数据可以指定id吗
mylist = [ { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"}, { "_id": 2, "name": "Google", "address": "Google 搜索"}, { "_id": 3, "name": "Facebook", "address": "脸书"}, { "_id": 4, "name": "Taobao", "address": "淘宝"}, { "_id": 5, "name": "Zhihu", "address": "知乎"} ] ins = mycol.insert_many(mylist) # 插入多条数据 print(ins.inserted_ids) 结果:[1, 2, 3, 4, 5]
四、删除数据
1、删除一条数据
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.x.x.x:x") # 连接数据库 mydb = dbcon["lion"] # 选择lion数据库 mycol = mydb["kzg_col"] # 选择集合名 qu = {"name":"RUNOOB"} print(mycol.find().count()) # 总数18 print(mycol.find(qu).count()) # 待删除数据2 print(mycol.delete_one(qu)) # 删除1条 print(mycol.find().count()) # 剩17条
print(mycol.find().count()) # 总数17
print(mycol.find_one_and_delete(qu)) # 返回删除的数据
print(mycol.find().count()) # 剩16条
2、一次删除多条数据
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymongo
dbcon = pymongo.MongoClient("mongodb://10.x.x.x:27017") # 连接数据库
mydb = dbcon["lion"] # 选择lion数据库
mycol = mydb["kzg_col"] # 选择集合名
qu = {"name": {"$regex":"^F"}}
print(mycol.find().count()) # 总数16
print(mycol.find(qu).count()) # 符合查询条件3条
d = mycol.delete_many(qu) # 删除多条
print(d.deleted_count) # 已删除3条
d = mycol.delete_many({}) # 删除所有数据(集合存在, 数据为空)
mycol.drop() # 删除集合
print(mycol.find().count()) # 总数13条
五、修改数据
1、修改一条数据
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymongo
dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017") # 连接数据库
mydb = dbcon["lion"] # 选择lion数据库
mycol = mydb["kzg_col"] # 选择集合名
myq = {"name": "Taobao"} # 查询name=Taobao
myq = {"name": {"$regex":"^F"}} # 查询 name以F开头
myu = {"$set": {"alexa": 200}} # 更新 alexa=200
u = mycol.update_one(myq, myu) # 一次更新一条
u = mycol.update_many(myq, myu) # 一次更新多条
print(u.modified_count) # 修改数量
六、查询
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017") # 连接数据库 mydb = dbcon["lion"] # 选择lion数据库 mycol = mydb["kzg_col"] # 选择集合名 mycol.find_one() # 查询集合中的第一条数据 mycol.find() # 查询集合中的所有数据 # 0不返回 1返回 ,_id 列不特指默认返回 for x in mycol.find({}, {"_id": 0, "name": 1, "alexa": 1}): print(x) # 除了字段alexa不显示, 其它的都显示 for x in mycol.find({}, {"alexa": 0}): print(x) # 只显示_id和alexa字段 for x in mycol.find({}, {"alexa": 1}): print(x) # 指定查询条件 mydoc = mycol.find({"name": "Taobao"}) for d in mydoc: print(d) # 高级查询(name字段第一个字母大于H的数据) mydoc = mycol.find({"name":{"$gt":"H"}}) # 正则表达式(查询字符串的字段) mydoc = mycol.find({"name":{"$regex":"^G"}}) # 返回指定数量的条数 res = mycol.find().limit(3) print(res.count()) # 总数5条 for x in res: # 实际返回3条 print(x)
七、排序
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymongo dbcon = pymongo.MongoClient("mongodb://10.20.6.36:27017") # 连接数据库 mydb = dbcon["lion"] # 选择lion数据库 mycol = mydb["kzg_col"] # 选择集合名 # sort 第一个参数为排序字段, 第二个参数1为升序, -1 为降序, 默认升序 mydoc = mycol.find().sort("alexa", -1) for d in mydoc: print(d)