1. 什么是MongoDB
MongoDB是一种基于文档的分布式数据库,它使用文档模型和异步架构,这使得MongoDB成为一种可伸缩、灵活且高可用性的NoSQL数据库。
相较于传统的关系型数据库,MongoDB有以下几个优势:
可以存储复杂的文档
支持动态查询
支持水平扩展
采用JSON格式存储数据
Python是MongoDB的官方支持语言之一,使用Python操作MongoDB可以快捷地完成数据的存储、查询和更新等操作。
2. 安装pymongo库
在使用Python操作MongoDB之前,需要先安装相关的库。Python操作MongoDB最常用的库之一是pymongo库。
可以通过pip命令安装pymongo库:
pip install pymongo
3. 连接MongoDB数据库
在使用pymongo库操作MongoDB数据库之前,需要先连接上MongoDB数据库。
连接MongoDB数据库需要指定数据库的地址和端口,例如:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
其中,localhost是本地主机,27017是MongoDB服务的端口号。
连接MongoDB数据库成功后,我们就可以对数据库进行操作了。
4. 数据库和集合
4.1 创建数据库
在MongoDB中,数据库不需要预先创建,当第一次向一个不存在的数据库写入数据时,MongoDB会自动创建该数据库。
可以通过以下方式使用pymongo库创建一个数据库:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
该代码会创建一个名为mydatabase的数据库。
4.2 创建集合
在MongoDB中,集合也不需要预先创建,当第一次向一个不存在的集合写入数据时,MongoDB会自动创建该集合。
可以通过以下方式使用pymongo库创建一个集合:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
该代码会创建一个名为customers的集合。
5. 插入数据
在MongoDB中,插入数据使用insert_one()方法。
可以通过以下方式在MongoDB数据库中插入一条数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
mydict = {'name': 'John', 'address': 'Highway 37'}
x = mycol.insert_one(mydict)
print(x.inserted_id)
以上代码会向名称为customers的集合中插入一条数据。数据是一个名为John,地址为Highway 37的字典。
插入数据成功后,insert_one()方法会返回一个InsertOneResult对象,该对象包含了插入数据的信息。
6. 查询数据
在MongoDB中,查询数据使用find()方法。
6.1 查询所有数据
可以通过以下方式查询一个集合中的所有数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
for x in mycol.find():
print(x)
以上代码会查询名为customers的集合中的所有数据,并且将数据打印出来。
6.2 查询指定数据
可以通过以下方式查询符合指定条件的数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
myquery = {'address': 'Highway 37'}
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
以上代码会查询名为customers的集合中地址为Highway 37的所有数据,并且将数据打印出来。
7. 更新数据
在MongoDB中,更新数据使用update_one()方法或update_many()方法。
7.1 更新一条数据
可以通过以下方式更新符合指定条件的一条数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
myquery = {'address': 'Highway 37'}
newvalues = {'$set': {'address': 'Park Lane 38'}}
mycol.update_one(myquery, newvalues)
for x in mycol.find():
print(x)
以上代码会查询名为customers的集合中地址为Highway 37的数据,并且将其中的地址修改为Park Lane 38。
7.2 更新多条数据
可以通过以下方式更新符合指定条件的多条数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
myquery = {'address': {'$regex': '^S'}}
newvalues = {'$set': {'address': 'Canyon 123'}}
x = mycol.update_many(myquery, newvalues)
print(x.modified_count, 'documents updated.')
以上代码会查询名为customers的集合中地址以S开头的所有数据,并且将其中的地址修改为Canyon 123。
8. 删除数据
在MongoDB中,删除数据使用delete_one()方法或delete_many()方法。
8.1 删除一条数据
可以通过以下方式删除符合指定条件的一条数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
myquery = {'address': 'Mountain 21'}
mycol.delete_one(myquery)
for x in mycol.find():
print(x)
以上代码会删除名为customers的集合中地址为Mountain 21的一条数据。
8.2 删除多条数据
可以通过以下方式删除符合指定条件的多条数据:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = client['mydatabase']
mycol = mydb['customers']
myquery = {'address': {'$regex': '^S'}}
x = mycol.delete_many(myquery)
print(x.deleted_count, 'documents deleted.')
以上代码会删除名为customers的集合中地址以S开头的所有数据。
总结
以上就是使用Python操作MongoDB数据库的基本方法。在实际使用中,还有很多其他的操作和技巧,需要根据具体需求进行掌握。