一、MongoDB是什么?
MongoDB是一个非关系型、面向文档的数据库管理系统,以C++语言编写,被广泛应用于现代Web应用程序的开发中。
与传统的关系型数据库不同,MongoDB是一个完全面向对象的数据库,使用JSON形式来存储数据。它采用了灵活的文档模型,不需要预定义表结构,数据可以非常容易地嵌入,支持多种数据类型,包括二进制、数组和嵌入的文档。
MongoDB架构的特点是支持水平扩展,具有高性能以及高可用性。
二、为什么要使用MongoDB?
MongoDB的优点之一是强大的查询性能。由于存储数据以文档形式,“查询过滤器”可以更轻松地访问数据,甚至可以跨多个文档嵌套查询。
MongoDB还可用于处理非结构化数据,例如,在未知的数据类型或带有大量嵌套属性的数据集中。
另一个优点是高可用性。MongoDB可以将数据复制到多个节点以实现“副本集群”,从而使故障转移更加容易,同时提供快速的读取副本方式,增加应用程序的可扩展性。
最后,MongoDB的性能比许多其他数据库更好。由于它是一个跨平台系统,并且可以定制修改,因此可以根据项目的要求定制开发过程。
三、基本MongoDB查询操作
在MongoDB中,可以使用Mongo shell、Compass等不同工具进行查询操作。这里使用Mongo shell作为演示。
1. 插入
db.
.insertOne(
) # 插入一条记录,如果集合二合一不存在,会自动创建
db.
.insertMany(
) # 插入多条记录,返回ID列表
2. 查询
db.
.find(
,
) # 查询数据
db.
.findOne(
,
) # 查询一条数据
3. 更新
db.
.updateOne(
,
,
) # 更新一条数据
db.
.updateMany(
,
,
) # 更新多条数据
4. 删除
db.
.deleteOne(
) # 删除一条数据
db.
.deleteMany(
) # 删除多条数据
四、使用MongoDB的代码示例
安装MongoDB。进入官网(https://www.mongodb.com/download-center/community),选择合适的版本进行下载。
1. 插入
mongodb_test.py的代码如下:
from pymongo import MongoClient
client = MongoClient() # 创建MongoDB客户端
db = client["test_db"] # 获取数据库,如果不存在则自动创建
collection = db["test_collection"] # 获取集合,如果不存在则自动创建
# 插入一条记录
post = {"author": "Peter", "text": "My first blog post!", "tags": ["MongoDB", "Python", "Pymongo"]}
result = collection.insert_one(post)
print(result.inserted_id)
# 插入多条记录
new_posts = [
{"author": "Mike", "text": "Another post!", "tags": ["bulk", "insert"]},
{"author": "Eliot", "title": "MongoDB is fun", "text": "and pretty easy too!", "date": datetime.datetime.utcnow()}
]
result = collection.insert_many(new_posts)
print(result.inserted_ids)
运行代码后,会输出每次插入操作的ID号。
2. 查询
mongodb_test.py的代码如下:
from pymongo import MongoClient
client = MongoClient() # 创建MongoDB客户端
db = client["test_db"] # 获取数据库,如果不存在则自动创建
collection = db["test_collection"] # 获取集合,如果不存在则自动创建
# 查询一条数据
result = collection.find_one({"author": "Peter"})
print(result)
# 查询多条数据
results = collection.find({"author": "Peter"})
for result in results:
print(result)
3. 更新
mongodb_test.py的代码如下:
from pymongo import MongoClient
client = MongoClient() # 创建MongoDB客户端
db = client["test_db"] # 获取数据库,如果不存在则自动创建
collection = db["test_collection"] # 获取集合,如果不存在则自动创建
# 更新一条数据
result = collection.update_one({"text": "My first blog post!"}, {"$set": {"text": "My second blog post!"}})
print("更新了", result.modified_count, "条记录。")
# 更新多条数据
result = collection.update_many({"author": "Mike"}, {"$set": {"author": "Eric"}})
print("更新了", result.modified_count, "条记录。")
4. 删除
mongodb_test.py的代码如下:
from pymongo import MongoClient
client = MongoClient() # 创建MongoDB客户端
db = client["test_db"] # 获取数据库,如果不存在则自动创建
collection = db["test_collection"] # 获取集合,如果不存在则自动创建
# 删除一条数据
result = collection.delete_one({"author": "Peter"})
print("删除了", result.deleted_count, "条记录。")
# 删除多条数据
result = collection.delete_many({"author": "Mike"})
print("删除了", result.deleted_count, "条记录。")
五、结论
MongoDB是一种非常灵活的NoSQL数据库,可以用于各种现代Web应用程序的开发,具有高性能和高可用性。通过学习基本查询操作,可以更加了解MongoDB的功能和使用方法。