mongodb学习

一、基础了解

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" }

仅限个人学习记录!

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值