mongodb(二)

本文介绍了MongoDB中db.collection.aggregate()方法的使用技巧及其优势,包括数据处理管道、内存限制及解决方法、分片集合的支持等,并通过一个具体示例展示了如何进行数据筛选、分组与限制结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1、db.collection.aggregate()可以多个管道,能方便的进行数据的处理。

  2、db.collection.aggregate()使用了MongoDB内置的原生操作,聚合效率非常高,支持类似于SQL Group By操作的功能,而不再需要用户编写自定义的JavaScript例程。

  3、 每个阶段管道限制为100MB的内存。如果一个节点管道超过这个极限,MongoDB将产生一个错误。为了能够在处理大型数据集,可以设置allowDiskUse为true来在聚合管道节点把数据写入临时文件。这样就可以解决100MB的内存的限制。

 4、db.collection.aggregate()可以作用在分片集合,但结果不能输在分片集合,MapReduce可以 作用在分片集合,结果也可以输在分片集合。

 5、db.collection.aggregate()方法可以返回一个指针(cursor),数据放在内存中,直接操作。跟Mongo shell 一样指针操作。

 6、db.collection.aggregate()输出的结果只能保存在一个文档中,BSON Document大小限制为16M。可以通过返回指针解决,版本2.6中后面:DB.collect.aggregate()方法返回一个指针,可以返回任何结果集的大小。
例子


db.orders.aggregate([  
{$match:{"onumber":{$in:["001","002", "003"]}}},  
{$unwind:"$items"},  
{$group:{_id:"$items.ino",total:{$sum:"$items.quantity"}}},  
{$match:{total:{$gt:1}}},
{$limit:2}
]); 


匹配onumber在001,002,003中,将items数组拆分,将集合中的文档分组,可用于统计结果,$group首先将数据根据key进行分组,total:{$sum:"$items.quantity"} 销量
total大于1的,输出结果中的前两个


---
find({},{'newsIsSpam':1,"_id":0})

---
count 7111760
db.getCollection('NEWS_AUDIT_SOURCE').distinct('auditType') 
[
    "AT002",
    "AT010",
    "AT012"
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值