一、基础了解
1、mongodb是一个文档型数据,区别与其他nosql数据库,比如redis(键值对数据库),mongodb的数据虽然存储在磁盘上,但映射到内存中,redis的数据是直接放在内存中。
2、mongodb的基本数据结构:database数据库、collection集合、document数据文档、field字段、index索引、primarykey主键
3、基本操作包括CRUD(新增创建、读取、更新、删除)
4、mongo连接数据库、db查看当前操作的数据库、user切换数据库、show databases查看所有数据库、show collections查看当前数据库中所有集合
5、mongodb不支持传统事务操作,4.0 版本开始,引入了多文档事务的支持;mongodb不支持join操作,但聚合管道提供了丰富的阶段和操作符,可以进行筛选、分组、排序、投影、计算等操作,以实现复杂的数据处理和分析需求。
二、稍深入了解
1、mongodb索引的创建和使用
MongoDB提供了丰富的功能来优化查询性能。索引可以加快查询速度并减少查询所需的资源。下面是一个使用索引的例子:
假设你有一个存储用户信息的集合(collection),其中包含了大量的用户数据。为了加快根据用户姓名进行查询的速度,你可以创建一个索引来优化查询性能。以下是在MongoDB中创建和使用索引的示例代码:
# 创建索引 db.users.create_index("name")
# 查询时使用索引 db.users.find({"name": "John"})
在上面的例子中,我们使用create_index
方法在users
集合上创建了一个名为name
的索引。然后,我们可以使用find
方法来查询具有特定姓名的用户,MongoDB会自动使用索引来加速查询。
2、mongodb聚合管道
允许你对文档进行多个阶段的处理和转换。聚合管道可以用于复杂的数据分析和聚合操作。以下是一个使用聚合管道的例子:
假设你有一个存储销售订单的集合,其中包含了订单的日期、产品和销售数量等信息。你想要计算每个产品的总销售数量,并按照销售数量降序排列。以下是在MongoDB中使用聚合管道实现这个需求的示例代码:
# 聚合管道查询
pipeline = [ {"$group": {"_id": "$product", "total_sales": {"$sum": "$quantity"}}}, {"$sort": {"total_sales": -1}} ]
result = db.orders.aggregate(pipeline)
# 输出结果
for doc in result: print(doc)
在上面的例子中,我们使用聚合管道来进行两个阶段的处理。首先,使用$group
操作符按照产品进行分组,并使用$sum
操作符计算每个产品的总销售数量。然后,使用$sort
操作符按照总销售数量降序排列结果。
在聚合管道查询中,"$
"符号是mongodb中的聚合操作符的前缀,用于表示特定的聚合操作。在上述的代码中,"group" 和 "$sum" 都是聚合操作符的示例。
MongoDB还提供了其他丰富的阶段和操作符,如$limit
(限制结果数量)、$skip
(跳过指定数量的结果)、$lookup
(进行关联查询)等。
3、mongodb数据存储样例
假设我们有一个名为users
的集合,用于存储用户信息。每个用户文档包含以下字段:name
(姓名)、age
(年龄)、email
(电子邮件)和address
(地址)。以下是一个示例用户文档的结构:
{ "_id": ObjectId("60a7e8e8e8e8e8e8e8e8e8e8"),
"name": "John",
"age": 30,
"email": "john@example.com",
"address": "123 Main St" }
仅限个人学习记录!