一、MongoDB基础知识
MongoDB是一个NoSQL数据库,其具有高可扩展性和灵活性。它将数据存储在文档中,这些文档可以用JSON格式表示。
MongoDB的术语解释:
集合(Collection):MongoDB包含许多文档,这些文档存储在集合中。
文档(Document):MongoDB中的每个数据存储在文档中,文档使用JSON格式存储。
字段(Field):在文档中,每个项的键值对称为字段。
ID:每个文档都有一个唯一的ID,它在集合中是唯一的。MongoDB会为每个文档自动生成一个ID。
二、MongoDB的连接方式
使用MongoDB的第一步是连接到MongoDB服务器。连接MongoDB服务器的方式有两种:
1. 在命令行中连接
在命令行中使用mongo
命令连接MongoDB:
mongo
在连接成功后,可以开展实例中所述的其他操作。
2. 通过驱动程序API连接
大多数应用程序将使用MongoDB的驱动程序API来连接MongoDB。以下是Python中的示例代码:
import pymongo
# 连接到MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 创建数据库
db = client["mydatabase"]
三、MongoDB的查询方式
在MongoDB中,我们使用find()
方法来查询数据,该方法用于从数据库中检索数据。
1. 查询所有文档
以下代码将返回集合中的所有文档:
# 从集合中获取所有文档
for x in collection.find():
print(x)
2. 查询指定字段的文档
以下代码将返回集合中指定字段的所有文档:
# 返回所有文档,但仅包括"_id"和"name"字段
for x in collection.find({}, {"_id": 0, "name": 1}):
print(x)
3. 查询指定条件的文档
以下代码将返回集合中符合指定条件的文档:
# 返回符合条件的文档
myquery = {"name": "John"}
mydoc = collection.find(myquery)
for x in mydoc:
print(x)
4. 查询指定条件并限制结果数量的文档
以下代码将返回集合中符合指定条件但仅限制5个文档的文档:
# 返回符合条件的文档,但限制为5个
myquery = {"name": {"$regex": "^S"}}
myresult = collection.find(myquery).limit(5)
for x in myresult:
print(x)
四、MongoDB的实例:学生成绩管理系统
下面通过一个实例来介绍MongoDB的使用。我们将创建一个学生成绩管理系统,其包含Student和Score两个集合。
1. 创建数据库和集合
首先,我们需要连接到MongoDB:
import pymongo
# 连接到MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 创建数据库
db = client["mydatabase"]
# 创建集合
student_collection = db["students"]
score_collection = db["scores"]
2. 插入数据
以下代码将向Student集合中插入一条数据:
# 向集合中插入数据
mydict = { "name": "John", "age": 22 }
student_collection.insert_one(mydict)
以下代码将向Score集合中插入多个数据:
# 向集合中插入多条数据
mylist = [
{ "name": "John", "score": 90 },
{ "name": "Amy", "score": 85 },
{ "name": "Peter", "score": 80 },
{ "name": "Hannah", "score": 92 }
]
score_collection.insert_many(mylist)
3. 查询数据
以下代码将从Student集合中获取所有文档并打印它们:
# 从集合中获取所有文档
for x in student_collection.find():
print(x)
以下代码将从Score集合中获取所有文档,并返回指定条件的文档,并仅将结果限制为3个文档:
# 从集合中获取所有文档,并返回指定条件的文档,但限制为3个
myquery = { "score": { "$gt": 85 } }
myresult = score_collection.find(myquery).limit(3)
for x in myresult:
print(x)
查询结果如下:
{
"_id": ObjectId("5f8f70fde7bc7ea8ddf3b16f"),
"name": "Amy",
"score": 85
}
{
"_id": ObjectId("5f8f70fde7bc7ea8ddf3b170"),
"name": "John",
"score": 90
}
{
"_id": ObjectId("5f8f70fde7bc7ea8ddf3b172"),
"name": "Hannah",
"score": 92
}
4. 更新数据
以下代码将更新集合中指定条件的文档:
# 更新一条文档
myquery = { "name": "John" }
newvalue = { "$set": { "age": 23 } }
student_collection.update_one(myquery, newvalue)
5. 删除数据
以下代码将删除集合中指定条件的文档:
# 删除一条文档
myquery = { "name": "Amy" }
student_collection.delete_one(myquery)
五、文章总结
本文主要介绍了MongoDB的基础知识、连接方式、查询方式以及一个学生管理系统的实例。通过本文,我们了解了MongoDB的基本概念,并学会了如何使用Python进行MongoDB的操作。希望本文对您有所帮助!