一、pymongo安装
Python连接MongoDB需要MongoDB的驱动,使用pymongo驱动来连接。
1、使用pip来安装pymongo:
$ python3 -m pip3 install pymongo
#指定版本
$ python3 -m pip3 install pymongo==3.5.1
#更新pymongo命令
$ python3 -m pip3 install --upgrade pymongo
2、easy_insatll安装
$ python -m easy_install pymongo
#更新
$ python -m easy_install -U pymongo
执行结果:
二、创建数据库
创建数据库需要使用MongoClient对象,并指定连接的URL地址和要创建的数据库名。
实例:
#连接mongodb
myclient = pymongo.MongoClient("mongodb://localhost:27017")
#创建数据库
mydb = myclient["mydb"]
三、增、删、改、查等操作
1、增加数据
使用insert_one()和insert_many()函数实现集合数据的插入。
2、查询数据
使用find()和find_one()函数来查询数据库中的数据。
3、修改数据
使用update_one()和update_many()实现更新数据。
4、数据排序
使用sort()函数来对数据排序,1表示升级,-1表示降序。
5、删除数据
使用delete_one()和delete_many()来删除集合中的数据,drop()来删除集合
完整实例:
import pymongo
#1、连接mongodb
myclient = pymongo.MongoClient("mongodb://localhost:27017")
#2、创建数据库
mydb = myclient["mydb"]
#判断数据库是否存在
dblist = myclient.list_database_names()
if "mydb" in dblist:
print("数据库已存在")
#创建集合(表)
mycol = mydb["my_col"]
#判断集合是否存在
collist = mydb.list_collection_names()
if "my_col" in collist:
print("集合已存在")
#3、插入数据
#插入单条文档数据
mydict = {"name":"小明", "sex":"M", "grade":98}
x = mycol.insert_one(mydict)
print(x)
#返回_id字段,即插入文档的属性ID值
print(x.inserted_id)
#插入多个文档对象
mydictlist = [
{"name":"小芳", "sex":"F", "grade":98},
{"name":"小丽", "sex":"F", "grade":100},
{"name":"小强", "sex":"M", "grade":59}
]
y = mycol.insert_many(mydictlist)
#输出所有文档的id值
print(y.inserted_ids)
#在终端输入命令查看数据是否插入成功
#use mydb
#db.my_col.find()
#插入指定_id的多个文档
mydictlist2 = [
{"_id":1, "name":"小明", "sex":"M", "grade":98},
{"_id":2, "name": "小芳", "sex": "F", "grade": 98},
{"_id":3, "name": "小丽", "sex": "F", "grade": 100},
{"_id":4, "name": "小强", "sex": "M", "grade": 59}
]
z = mycol.insert_many(mydictlist2)
print(z.inserted_ids)
#4、查询
#查询一条数据
sel1 = mycol.find_one()
#查询集合中所有数据
for i in mycol.find():
print(i)
#查询指定字段的数据,find方法内的是查询条件,相当于SQL中select name,sex from my_col;
#其中0为不返回显示,1为返回显示
for i in mycol.find({}, {"_id": 0, "name": 1, "sex": 1}):
print(i)
#除了 _id,你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 1,反之亦然
#以下实例处理sex字段外,其他字段都返回
for i in mycol.find({}, {"sex": 0}):
print(i)
#查询符合条件的数据,相当于select * from my_col where name="小明";
myquery = {"name": "小明"}
for i in mycol.find(myquery):
print(i)
#高级查询
#相当于SQL:select * from my_col where grade>60 and grade<100;
myquery1 = {"grade": {"$gt":60, "$lt":100}}
for i in mycol.find(myquery1):
print(i)
#正则表达式查询 相当于:select * from my_col where sex = "%F";
myquery2 = {"sex": {"$regex": "^F"}}
for i in mycol.find(myquery2):
print(i)
#返回指定条数,相当于:select * from my_col limit 2;
myresult = mycol.find().limit(2)
for i in myresult:
print(i)
#5、更新数据
#第一个参数为查询条件,第二个为修改的数据
#更新一条数据
myquery3 = {"name":"小明"}
newvalues = {"$set": {"grade": 100}}
mycol.update_one(myquery3, newvalues)
for i in mycol.find:
print(i)
#更新多条数据
myquery4 = {"sex": {"$regex": "^F"}}
newvalues1 = {"$set": {"grade": 101}}
x = mycol.update_many(myquery4, newvalues1)
#modifed_count计算修改的条数
print(x.modifed_count, "文档已修改")
#6、数据排序
#第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。
#按grade排序
mydoc = mycol.find().sort("grade", -1)
#7、删除数据
#该方法第一个参数为查询对象,指定要删除哪些数据
#删除一条数据,删除name为小明的数据
mycol.delete_one(myquery3)
#删除多条数据
#删除所有匹配的数据
mycol.delete_many(myquery4)
#删除集合中所有文档
mycol.delete_many({})
#删除集合
mycol.drop()