首页 > 编程知识 正文

mongodb数据库命令,管道自动焊接

时间:2023-05-05 15:42:22 阅读:156367 作者:1875

在上一篇文章中,我们学习了MongoDB的一些基本管道操作符,但是在本文中我们来看一下其他的管道操作符。

文章列表1,$group1,基本操作2,算术运算符3,极值运算符2,$unwind,其他运算符: sort/limit/skip,总结1,$group1,基本操作

$group可用于对文档进行分组。 例如,假设您按城市对订单进行分组,并希望统计每个城市的订单数量。

db.sang _ collect.aggregate { $ group : { _ id : ' $ orderaddressl ',count:{$sum:1}}}要分组的字段

2 .数学运算符可以用数学运算符对分组的文档进行求和或求平均值。 例如,我想计算各城市的订单运费合计,如下所示。

db.sang _ collect.aggregate ({ $ group : (_ id : ) $orderaddressl ),totalfreight3360 ) $sum3360 ) $freighht 如下所示。

{ '_id' : 'HaiKou ',' total freight ' :20.0 } { ' _ id ' : ' Hangzhou ',' totalFreight' : 10.0}也分别是

db.sang _ collect.aggregate ($ group : (_ id : ) $orderaddressl ),avgfreight: ) $avg: ) $freight

3 .极值算子极值算子用于获取分组数据集的边值。 例如,要获得每个城市最高的运费,请执行以下操作:

db.sang _ collect.aggregate ({ $ group : (_ id : ' $ orderaddressl ',maxfreight3360 ) $max:'$freight

db.sang _ collect.aggregate ($ group : (_ id : ' $ orderaddressl ',minfreight3360 ) $min: ) $freight

db.sang_collect.aggregate () $group:(_id: ) $orderaddressl ),firstfreight3360 ) $first3360($freight

db.sang _ collect.aggregate ($ group : (_ id : ) $orderaddressl ),lastfreight3360 ) $last: ) $freighht

$addToSet允许将分组字段放置在一个数组中,但只显示一次重复的元素。 此外,元素添加到数组的顺序不规则。 例如,如果将每个分组城市的运费放置在数组中,则:

db.sang _ collect.aggregate ($ group : (_ id : ' $ orderaddressl ',freights: ) $addtoset:'$freights

可以添加$push而不限制重复数据,如下所示:

db.sang _ collect.aggregate ($ group : (_ id : ' $ orderaddressl ',freights: ) $push:'$freight '

{ ' _ id ' : objectid (59 f 93 c8 b 8523 CFA E4 cf 4b a 86 )、' name' : 'lydlb )、' books': '、{ 'name' : '叫喊

db.sang _ books.aggregate ({ $ unwind : ' $ books ' } )的拆分结果如下:

{ ' _ id ' : objectid (59 f 93 c8 b 8523 CFA E4 cf 4b a 86 )、' name' : 'lydlb )、' books ' : ' name ' 3: '呼喊。 publisher' : '花城出版社' } { ' _ id ' : objectid (' 59 f 93 c8 b 8523 CFA E4 cf 4b a 86 )、' name' : 'lydlb )、' book ' kk。

db.sang _ collect.aggregate { $ sort : { orderaddressl 33601 } }的用法与至此描述的常规搜索一致。 可以按现有字段排序,也可以按重命名的字段排序。 如下所示。

db.sang _ collect.aggregate { $ project : { OA : ' $ orderaddressl ' },{$sort3360{OA:-1}}}1表示升序

$limit返回结果中的前n个文档。 返回结果的前三个文档,如下所示:

db.sang _ collect.aggregate { $ project : { OA : ' $ orderaddressl ' },{$limit33603}}$skip将前n个文档转换为例如,这意味着要跳过前面的n个文档

db.sang _ collect.aggregate { $ project : { OA : ' $ orderaddressl ' },{$skip33605}}$skip效率较低,请谨慎使用

四、总结在管道开始执行的阶段过滤尽可能多的数据,这样做有两个好处。

索引仅在直接从集合中查询时使用,如果提前执行过滤,索引将发挥作用。 过滤此过滤后的数据后,还可以降低后面管道的运行压力。 此外,MongoDB不允许单个聚合操作占用大量内存。 如果一个聚合操作占用20%以上的内存,则会直接报告错误。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。