库引入
Python连接MongoDB数据库,这里我们使用 PyMongo 驱动来连接。
import pymongo
链接数据库
创建数据库 需要使用 MongoClient 对象,并且指定连接的ip和端口号。
myclient=pymongo.MongoClient("localhost",27017)
选择test数据库
切换/创建(不存在的时候)数据库test
mydb=myclient['test']
新建student集合
切换/显示创建(不存在的时候)集合
mycoll=mydb['c1']
查看数据库和集合
dbs=myclient.list_database_names()#查看所有数据库
dbs
['admin', 'config', 'local', 'test']
注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
查看集合
colls=mydb.list_collection_names()#查看/罗列集合名
mycoll=mydb['student']
显示创建和删除集合
create_collection()创建集合,drop_collection(“love”)删除集合
mydb=myclient['test']
mydb.create_collection("love")#创建集合love
mydb.drop_collection("love")#删除集合love
文档增删改查
查看文档
myclient=pymongo.MongoClient("localhost",27017)#链接服务
mydb=myclient['test']#选择数据库
mycoll=mydb['c1']#选择集合
docs=mycoll.find()#查看文档
#打印文档
for i in docs:
print(i)
{'_id': ObjectId('664bef6e3dceef39a819193e'), 'name': 'aa1', 'age': 18.0}
{'_id': ObjectId('664bef6e3dceef39a819193f'), 'name': 'aa2', 'age': 18.0}
{'_id': ObjectId('664bef6e3dceef39a8191940'), 'name': 'aa4', 'age': 20.0}
{'_id': ObjectId('664bef6e3dceef39a8191941'), 'name': 'aa5', 'age': 17.0}
插入文档
插入单个文档
d1={"name":"hakgd","age":88,"major":"大数据"}#python中key也需要使用引号括起来
x=mycoll.insert_one(d1)#插入单个文档insert_one
print(x.inserted_id)#打印文档_id
<pymongo.results.InsertOneResult object at 0x000002049FE76278>
664bfe3b32a3dbc8cddeb487
insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id值。
插入多个文档
集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
insert_many() 方法返回 InsertManyResult 对象,该对象包含 inserted_ids 属性,该属性保存着所有插入文档的_id 值。
d = [
{name:"张三", age:18, sex:"男",major:"大数据技术"},
{name:"李四", age:19, sex:"男",major:"大数据技术"},
{name:"王五", age:18, sex:"女",major:"人工智能"}
]
print(d)
查询文档
查询之前插入的多条文本
dos=mycoll.find()
for i in dos:
print(i)
文档修改
将{major:"人工智能"}修改为{major:"大数据技术"}
q = {"major":"人工智能"} # 查询条件
n_d = {"$set":{"major":"大数据技术"}}# 新数据
mycoll.update_one(q,n_d) # 修欧匹配到的第一个文档
for d in mycoll.find() :
print(d)
使用find()方法
给{name:"张三"}的年龄加2岁;并使用find()方法查看是否成功
删除文档
删除{name:"李四"}的文档
mycoll.delete_one({"name":"王五"})
使用find()方法查看是否成功