MongoDB的基本认识
- 简介与特点:MongoDB是一个基于分布式文件存储的开源NoSQL数据库,由C++编写。它旨在为WEB应用提供可扩展、高性能的数据存储解决方案,介于关系数据库和非关系数据库之间,功能丰富且最像关系数据库的非关系数据库。MongoDB使用BSON(Binary JSON)格式存储数据,支持复杂的数据结构,如数组和嵌套对象。
- 业务应用场景:MongoDB适用于大数据量、高并发写入、对事务性要求不高的应用场景,例如社交、游戏、物流、物联网和视频直播等领域,能够实现高效的数据存储和访问。
- 选择MongoDB的条件:当应用不需要事务及复杂join支持、需求不断变化、需要快速迭代开发、面临高读写QPS需求或TB甚至PB级别数据存储时,选择MongoDB更为合适。
MongoDB是一个基于分布式文件存储的开源NoSQL数据库,由C++编写。它提供了高性能、高可用性、易扩展性的数据库解决方案。在本文中,我们将介绍一些MongoDB数据库的基本操作,并通过实际代码示例来加深理解。
MongoDB是一种灵活、可扩展的NoSQL数据库,它使用类似JSON的文档格式来存储数据,具有动态模式的特点。
MongoDB的这些特性使其成为处理大数据、实时应用程序和复杂查询的理想选择。下面将介绍MongoDB的一些基础操作方法:
- 查看所有数据库:
- 使用
show dbs
命令可以查看当前MongoDB实例中所有的数据库列表。这个命令可以在任何数据库上执行。 - 示例命令:
show databases
- 使用
admin:"root" 数据库,将一个用户添加到这个库中,这个用户自动继承所有数据库的权限. 另外,一些特定的服务器命令也能从这个库中运行,比如列出所有数据库或关闭数据库.
local:这个数据库的数据永远只有一份,不会被主从复制.
config:当 Mongo 用于分片设置时,config 数据库再内部使用,用于保存分片的相关信息.
- 创建数据库:
- 使用
use
命令可以创建一个新的数据库。如果指定的数据库不存在,MongoDB会在第一次使用该数据库时创建它。 - 示例命令:
use demo
- 使用
- 查看当前正在使用的数据库:
- 可以使用
db
命令或者db.getName()
方法来查看当前正在使用的数据库。 - 示例命令:
db
- 可以使用
统计数据库信息:
-
- 使用
db.stats()
方法可以查看当前数据库的详细信息,例如大小、索引数等。注意要在特定数据库下执行此命令。 - 示例命令:
db.stats()
- 使用
- 删除当前使用的数据库:
- 使用
db.dropDatabase()
命令可以删除当前正在使用的数据库。这会永久删除数据库中的所有数据,需谨慎操作。 - 示例命令:
db.dropDatabase()
- 使用
- 查看集合:
- 使用
db.getCollectionNames()
可以查看当前数据库下的所有集合名称。 - 示例命令:
db.getCollectionNames()
- 使用
- 查看当前db版本:
- 通过执行
db.version()
命令,可以查看当前运行的MongoDB版本信息。 - 示例命令:
db.version()
- 通过执行
综上所述,MongoDB提供了灵活的数据库操作方法,帮助用户高效地管理数据。这些基础操作为进一步的数据操纵和高级应用打下了坚实的基础。
- 安装MongoDB
首先,我们需要安装MongoDB数据库。在Windows系统上,可以访问MongoDB官网下载对应的安装包。安装完成后,我们可以在命令行中输入mongod
启动数据库服务。
- 连接MongoDB
接下来,我们需要使用Python的pymongo库来连接MongoDB数据库。首先安装pymongo库:
pip install pymongo
然后,我们可以使用以下代码连接到本地的MongoDB数据库:
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client['test']
collection = db['student']
- 插入文档数据
在MongoDB中,数据以BSON(Binary JSON)格式存储。我们可以使用insert_one()方法插入单个文档,或使用insert_many()方法插入多个文档。以下是插入学生信息的示例:
data_list = [
{"name": "张壍", "age": 18, "sex": "男", "major": "大数据技术"},
{"name": "李四", "age": 19, "sex": "男", "major": "大数据技术"},
{"name": "王五", "age": 18, "sex": "女", "major": "人工智能"}
]
result = collection.insert_many(data_list)
print("插入成功,文档ID:", result.inserted_ids)
- 查询文档数据
我们可以使用find()方法查询文档数据。例如,查询所有学生信息:
for item in collection.find():
print(item)
我们还可以使用条件查询,例如查询专业为大数据技术的学生:
for item in collection.find({"major": "大数据技术"}):
print(item)
- 更新文档数据
我们可以使用update_one()方法更新单个文档,或使用update_many()方法更新多个文档。例如,将专业为人工智能的学生的专业修改为大数据技术:
collection.update_many({"major": "人工智能"}, {"$set": {"major": "大数据技术"}})
- 删除文档数据
我们可以使用delete_one()方法删除单个文档,或使用delete_many()方法删除多个文档。例如,删除姓名为李四的学生:
collection.delete_one({"name": "李四"})
- 聚合操作
MongoDB支持丰富的聚合操作,如计数、分组、排序等。例如,统计各专业的学生数量:
pipeline = [
{"$group": {"_id": "$major", "count": {"$sum": 1}}},
{"$sort": {"count": -1}}
]
result = collection.aggregate(pipeline)
for item in result:
print(item)
- 索引操作
为了提高查询性能,我们可以为集合创建索引。例如,为姓名字段创建唯一索引:
collection.create_index("name", unique=True)
总结
本文介绍了MongoDB数据库的基本操作,包括连接数据库、插入、查询、更新、删除文档数据,以及聚合和索引操作。通过实际代码示例,我们了解了如何使用Python的pymongo库进行MongoDB数据库的操作。在实际项目中,我们可以根据需求灵活运用这些操作,实现对数据的高效管理。