iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mongodb 之聚合框架--aggregate
  • 387
分享到

mongodb 之聚合框架--aggregate

2024-04-02 19:04:59 387人浏览 独家记忆
摘要

Mongodb中的聚合框架 1 .mongoDB 中的管道操作符之简单操作,  MonGo 中的数据查询语句db.collection.find(


Mongodb中的聚合框架

 

1 .mongoDB 中的管道操作符之简单操作, 

 

MonGo 中的数据查询语句db.collection.find({},{})中的第一个大括号是用来控制过滤条件的,

第二个大括号是控制key的显示的。如果想要对查询出来的结果集中的字段重命令,求平均值,分组等操作

的时候这个find就实现不了。

 

要想对查询出来的结果集做进一步处理,mongo提供一种实现的方式,聚合框架(aggreagate) 。

 

下面我们来进一步讨论这个aggreagate 怎么使用。。

 

在使用aggregate实现聚合操作之前,我们首先来认识下几个常用的聚合操作符。

$project::可以对结果集中的键 重命令,控制键是否显示,对列进行计算。

$match: 过滤结果集

$group:分组,聚合,求和,平均数,等

$skip: 在显示结果的时候跳过前几行

$sort:对即将显示的结果集排序

$limit:控制结果集的大小

 

(1).$project::可以对结果集中的键 重命令,控制键是否显示。如果在操作中,

实例一:

> db.test.find({},{_id:0}).limit(2);

{ "id" : 1, "iname" : "ToneyDeng", "iage" : 21, "iadd" : "ShengZheng", "mark" : "" }

{ "id" : 2, "iname" : "Jack", "iage" : 24, "iadd" : "ShangHai", "mark" : "" }

> db.test.aggregate({$project:{did:"$id",dname:"$iname",dage:"$iage",daddr:"$iadd",_id:0}},{$limit:2});

{

        "result" : [

                {

                        "did" : 1,

                        "dname" : "ToneyDeng",

                        "dage" : 21,

                        "daddr" : "ShengZheng"

                },

                {

                        "did" : 2,

                        "dname" : "Jack",

                        "dage" : 24,

                        "daddr" : "ShangHai"

                }

        ],

        "ok" : 1

}

 

在以上实例中,隐藏了_id,然后将其他所有的key的名字重新设置了下。

这里需要重点注意的是在对key重命令后,如果该key下面有索引,将使查询无法使用到索引。

所以尽量在查询后进行重命令。

 

 

(2)$match: 这个函数的功能其实和find({})差不多,主要过滤结果集的。

实例二:

> db.test.find({iage:{$lt:25}},{}).limit(2);

{ "_id" : ObjectId("54c1fe77570ca4579ca978e5"), "id" : 1, "iname" : "ToneyDeng", "iage" : 21, "iadd" : "ShengZheng", "mark" : "" }

{ "_id" : ObjectId("54c1febb570ca4579ca978e6"), "id" : 2, "iname" : "Jack", "iage" : 24, "iadd" : "ShangHai", "mark" : "" }

> db.test.aggregate({$match:{iage:{$lt:25}}},{$limit:2})

{

        "result" : [

                {

                        "_id" : ObjectId("54c1fe77570ca4579ca978e5"),

                        "id" : 1,

                        "iname" : "ToneyDeng",

                        "iage" : 21,

                        "iadd" : "ShengZheng",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c1febb570ca4579ca978e6"),

                        "id" : 2,

                        "iname" : "Jack",

                        "iage" : 24,

                        "iadd" : "ShangHai",

                        "mark" : ""

                }

        ],

        "ok" : 1

}

 

以上两个查询的结果集一样只是展示的方式不一样而已。

在进行聚合group之前最好执行match,减少数据量,提高工作效率。另外如果过滤的key上有索引,

那么查询会走索引。

 

 

(3). $group:分组,聚合,求和,平均数,等

实例三:

> db.test.aggregate({$group:{_id:"$iname",ct:{$sum:1},avg:{$avg:"$iage"}}},{$limit:3});

{

        "result" : [

                {

                        "_id" : "Tom",

                        "ct" : 3,

                        "avg" : 25.666666666666668

                },

                {

                        "_id" : "Owen",

                        "ct" : 2,

                        "avg" : 26

                },

                {

                        "_id" : "Smith",

                        "ct" : 1,

                        "avg" : 27

                }

        ],

        "ok" : 1

}

 

 

以上是一个简单的$group操作,这里需要重点解释一下几个字段

_id:分组字段,该字段的值必须为”$key” ,并且_id是固定的不能随意改变,该列表示需要的分组的字段,可以为单字段分组,也可以多字段分组(后面演示)。

ct:表示总的记录数,

avg:平均值。

 

 

(4).$skip: 在显示结果的时候跳过前几行

实例四:

  > db.test.find({}).sort({id:1});

{ "_id" : ObjectId("54c1fe77570ca4579ca978e5"), "id" : 1, "iname" : "ToneyDeng", "iage" : 21, "iadd" : "ShengZheng", "mark" : "" }

{ "_id" : ObjectId("54c1febb570ca4579ca978e6"), "id" : 2, "iname" : "Jack", "iage" : 24, "iadd" : "ShangHai", "mark" : "" }

{ "_id" : ObjectId("54c1ff22570ca4579ca978e7"), "id" : 3, "iname" : "Smith", "iage" : 27, "iadd" : "ShangHai", "mark" : "" }

{ "_id" : ObjectId("54c1ff36570ca4579ca978e8"), "id" : 4, "iname" : "Owen", "iage" : 27, "iadd" : "BeiJing", "mark" : "" }

{ "_id" : ObjectId("54c1ff44570ca4579ca978e9"), "id" : 5, "iname" : "Owen", "iage" : 25, "iadd" : "BeiJing", "mark" : "" }

{ "_id" : ObjectId("54c1ffc2570ca4579ca978ea"), "id" : 6, "iname" : "Tom", "iage" : 25, "iadd" : "WuHan", "mark" : "" }

{ "_id" : ObjectId("54c1ffd3570ca4579ca978eb"), "id" : 7, "iname" : "Tom", "iage" : 25, "iadd" : "BeiJing", "mark" : "" }

{ "_id" : ObjectId("54c2005e570ca4579ca978ec"), "id" : 8, "iname" : "Tom", "iage" : 27, "iadd" : "GuangZhou", "mark" : "nihao" }

{ "_id" : ObjectId("54c20076570ca4579ca978ed"), "id" : 9, "iname" : "Jack", "iage" : 23, "iadd" : "GuangZhou", "mark" : "Yahoo" }

> db.test.aggregate({$sort:{id:1}},{$skip:6});

{

        "result" : [

                {

                        "_id" : ObjectId("54c1ffd3570ca4579ca978eb"),

                        "id" : 7,

                        "iname" : "Tom",

                        "iage" : 25,

                        "iadd" : "BeiJing",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c2005e570ca4579ca978ec"),

                        "id" : 8,

                        "iname" : "Tom",

                        "iage" : 27,

                        "iadd" : "GuangZhou",

                        "mark" : "nihao"

                },

                {

                        "_id" : ObjectId("54c20076570ca4579ca978ed"),

                        "id" : 9,

                        "iname" : "Jack",

                        "iage" : 23,

                        "iadd" : "GuangZhou",

                        "mark" : "Yahoo"

                }

        ],

        "ok" : 1

}

 

通过上面的两个结果集的对比可以发现结果二成功跳过了前6行。

 

(5)$sort:对即将显示的结果集排序   ,   $limit:控制结果集的大小

 关于这两个管道操作符的的使用方法比较简单,在实例四和实例三中有使用到。

 

2.Mongodb 中的管道操作符之复杂操作,

 

实例五:分组后,重命名字段。

> db.test.aggregate({$group:{_id:"$iname",count:{$sum:1},avg:{$avg:"$iage"}}},{$project:{id:"$_id",ct:"$count",ag:"$avg",_id:0}})

{

        "result" : [

                {

                        "id" : "Tom",

                        "ct" : 3,

                        "ag" : 25.666666666666668

                },

                {

                        "id" : "Owen",

                        "ct" : 2,

                        "ag" : 26

                },

                {

                        "id" : "Smith",

                        "ct" : 1,

                        "ag" : 27

                },

                {

                        "id" : "Jack",

                        "ct" : 2,

                        "ag" : 23.5

                },

                {

                        "id" : "ToneyDeng",

                        "ct" : 1,

                        "ag" : 21

                }

        ],

        "ok" : 1

}

  

 

实例六:重命名字段再分组。

> db.test.aggregate({$project:{_id:0,aid:"$id",aname:"$iname",age:"$iage"}},{$group:{_id:"$aname",ct:{$sum:1},ag:{$avg:"$age"}}});

{

        "result" : [

                {

                        "_id" : "Tom",

                        "ct" : 3,

                        "ag" : 25.666666666666668

                },

                {

                        "_id" : "Owen",

                        "ct" : 2,

                        "ag" : 26

                },

                {

                        "_id" : "Smith",

                        "ct" : 1,

                        "ag" : 27

                },

                {

                        "_id" : "Jack",

                        "ct" : 2,

                        "ag" : 23.5

                },

                {

                        "_id" : "ToneyDeng",

                        "ct" : 1,

                        "ag" : 21

                }

        ],

        "ok" : 1

}

 

 

实例七:过滤再分组.

> db.test.aggregate({$match:{id:{$lt:6}}},{$group:{_id:"$iname",ct:{$sum:1},ag:{$avg:"$iage"}}});

{

        "result" : [

                {

                        "_id" : "Owen",

                        "ct" : 2,

                        "ag" : 26

                },

                {

                        "_id" : "Smith",

                        "ct" : 1,

                        "ag" : 27

                },

                {

                        "_id" : "Jack",

                        "ct" : 1,

                        "ag" : 24

                },

                {

                        "_id" : "ToneyDeng",

                        "ct" : 1,

                        "ag" : 21

                }

        ],

        "ok" : 1

}

 

 

实例八:分组再过滤

> db.test.aggregate({$group:{_id:"$iname",ct:{$sum:1},ag:{$avg:"$iage"}}},{$match:{ct:{$lte:2}}});

{

        "result" : [

                {

                        "_id" : "Owen",

                        "ct" : 2,

                        "ag" : 26

                },

                {

                        "_id" : "Smith",

                        "ct" : 1,

                        "ag" : 27

                },

                {

                        "_id" : "Jack",

                        "ct" : 2,

                        "ag" : 23.5

                },

                {

                        "_id" : "ToneyDeng",

                        "ct" : 1,

                        "ag" : 21

                }

        ],

        "ok" : 1

}

 

 

总结: 这几个聚合操作符之间没有严格的使用顺序,只要按照一定的规则搭配使用,一般的聚合都可以实现。

 

 

问题一:在聚合框架中,如何统计结果集的总数。

问题二:在聚合框架中,如何查看执行计划,

 

 

 

3.Mongodb 中的管道表达式之常用表达式。

  

管道表达式

project:部分

#数学表达式

$add:一个或多个表达式相加

$subtract:接收两个表达式,返回两表达式的之差

$multiply:接收一个或多个表达式,返回它们相乘的结果集

$divide:接收两个表达式,返回第一个除以第二个表达式的商

$mod:接收两个表达式,返回第一个表达式除以第二个表达式的余数(模型)

 

#日期表达式

$year:年份

$month:月份

$week:一年中的第几周

$dayOfMonth:本月的第几天

$dayOfWeek:一个星期的第几天

$dayOfYear:一年中的第几天

$hour:获取小时部分

$minute:取得分钟数

$second:取得秒数

 

#字符串表达式

$substr:字符串截取函数,相当于Mysql中substr

$concat:字符串连接函数

$toLower:将字符串值变为小写

$toUpper:将字符串值变为大写

 

 

 

#逻辑表达式

$cpm:接收两个表达式[exp1,exp2],如果exp1<exp2,就返回-1,如果exp1=exp2,就返回1,如果exp1>exp2就返回1

$cond:[bool,exp1,exp2],如果bool为true就返回exp1,否则返回exp2

$ifnull:[exp1,exp2],如果exp1为null,就返回exp2

$strcasecmp:比较两个字符串的大小

$eq/$ne/$gt/$gte/$lt/$lte:以此为(等于/不等于/大于/大于或等于/小于/小于或等于)

$and:并且

$or:或

$not:否

$in:相当于mysql中 in

$ne:不等于。

$exists:列是存在。

 

#数学表达式

(1)$add:一个或多个表达式相加

  > db.test.aggregate({$project:{iage:{$add:["$iage",1]},_id:0}},{$limit:3});

{

        "result" : [

                {

                        "iage" : 22

                },

                {

                        "iage" : 25

                },

                {

                        "iage" : 28

                }

        ],

        "ok" : 1

}

 

(2).$subtract:接收两个表达式,返回两表达式的之差

> db.test.aggregate({$project:{iage:{$add:["$iage",1]},subtr:{$subtract:["$iage",20]},_id:0}},{$limit:3});

{

        "result" : [

                {

                        "iage" : 22,

                        "subtr" : 1

                },

                {

                        "iage" : 25,

                        "subtr" : 4

                },

                {

                        "iage" : 28,

                        "subtr" : 7

                }

        ],

        "ok" : 1

}

 

(3).$multiply:接收一个或多个表达式,返回它们相乘的结果集

> db.test.aggregate({$project:{multi:{$multiply:["$iage",2]},_id:0}},{$limit:3});

{

        "result" : [

                {

                        "multi" : 42

                },

                {

                        "multi" : 48

                },

                {

                        "multi" : 54

                }

        ],

        "ok" : 1

}

 

(4).$divide:接收两个表达式,返回第一个除以第二个表达式的商

> db.test.aggregate({$project:{divide:{$divide:["$iage",11]},_id:0}},{$limit:3});

{

        "result" : [

                {

                        "divide" : 1.9090909090909092

                },

                {

                        "divide" : 2.1818181818181817

                },

                {

                        "divide" : 2.4545454545454546

                }

        ],

        "ok" : 1

}


(5).$mod:接收两个表达式,返回第一个表达式除以第二个表达式的余数(模型)

> db.test.aggregate({$project:{iage:1,mod:{$mod:["$iage",20]},_id:0}},{$limit:3});

{

        "result" : [

                {

                        "iage" : 21,

                        "mod" : 1

                },

                {

                        "iage" : 24,

                        "mod" : 4

                },

                {

                        "iage" : 27,

                        "mod" : 7

                }

        ],

        "ok" : 1

}

这个表达式很特别,可以在find,和match中使用但是好像是有点问题.

 

> db.test.find({id:{$mod:[21,4]}}).limit(3);

{ "_id" : ObjectId("54c1ff36570ca4579ca978e8"), "id" : 4, "iname" : "Owen", "iage" : 27, "iadd" : "BeiJing", "mark" : "" }

> db.test.find({id:{$mod:[7,4]}}).limit(3);

{ "_id" : ObjectId("54c1ff36570ca4579ca978e8"), "id" : 4, "iname" : "Owen", "iage" : 27, "iadd" : "BeiJing", "mark" : "" }

 

以上两个查询中,在正常情况下,查询出来的id应为,1,3 不应该为4,。

 

(6).#日期表达式部分.

 $year:年份

$month:月份

$week:一年中的第几周

$dayOfMonth:本月的第几天

$dayOfWeek:一个星期的第几天

$dayOfYear:一年中的第几天

$hour:获取小时部分

$minute:取得分钟数

$second:取得秒数

用法很单一,这里就用$year为例。

> db.test.aggregate({$project:{_id:0,iname:1,year:{$year:[new Date()]}}},{$limit:2});

{

        "result" : [

                {

                        "iname" : "ToneyDeng",

                        "year" : 2015

                },

                {

                        "iname" : "Jack",

                        "year" : 2015

                }

        ],

        "ok" : 1

}

 

(7).#字符串表达式

$substr:字符串截取函数,相当于mysql中substr

> db.test.aggregate({$project:{_id:0,id:1,iname:1,substr:{$substr:["$iname",0,4]}}},{$limit:2});

{

        "result" : [

                {

                        "id" : 1,

                        "iname" : "ToneyDeng",

                        "substr" : "Tone"

                },

                {

                        "id" : 2,

                        "iname" : "Jack",

                        "substr" : "Jack"

                }

        ],

        "ok" : 1

}

 

 

(8).$concat:字符串连接函数

> db.test.aggregate({$project:{_id:0,id:1,iname:1,iadd:1,concat:{$concat:["$iname","  ","$iadd"]}}},{$limit:2});

{

        "result" : [

                {

                        "id" : 1,

                        "iname" : "ToneyDeng",

                        "iadd" : "ShengZheng",

                        "concat" : "ToneyDeng  ShengZheng"

                },

                {

                        "id" : 2,

                        "iname" : "Jack",

                        "iadd" : "ShangHai",

                        "concat" : "Jack  ShangHai"

                }

        ],

        "ok" : 1

}

 

(9).$toLower:将字符串值变为小写  ,$toUpper:将字符串值变为大写

$toLower和$toUpper的使用方法一样,

> db.test.aggregate({$project:{_id:0,iname:1,toLower:{$toLower:["$iname"]}}},{$limit:2});

{

        "result" : [

                {

                        "iname" : "ToneyDeng",

                        "toLower" : "toneydeng"

                },

                {

                        "iname" : "Jack",

                        "toLower" : "jack"

                }

        ],

        "ok" : 1

}

 

 

(10)。#逻辑表达式

$cpm:接收两个表达式[exp1,exp2],如果exp1<exp2,就返回-1,如果exp1=exp2,就返回1,如果exp1>exp2就返回

> db.test.aggregate({$project:{_id:0,iname:1,iadd:1,cmp:{$cmp:["$iname","$iadd"]}}},{$limit:2});

{

        "result" : [

                {

                        "iname" : "ToneyDeng",

                        "iadd" : "ShengZheng",

                        "cmp" : 1

                },

                {

                        "iname" : "Jack",

                        "iadd" : "ShangHai",

                        "cmp" : -1

                }

        ],

        "ok" : 1

}

 

(11).$strcasecmp:比较两个字符串的大小(这个具体还不知道是怎么回事!,不过语法没有问题。)

> db.test.aggregate({$project:{_id:0,iname:1,iadd:1,strcasecmp:{$strcasecmp:["w","w"]}}},{$limit:2});

{

        "result" : [

                {

                        "iname" : "ToneyDeng",

                        "iadd" : "ShengZheng",

                        "strcasecmp" : 0

                },

                {

                        "iname" : "Jack",

                        "iadd" : "ShangHai",

                        "strcasecmp" : 0

                }

        ],

        "ok" : 1

}

 

(12).$cond:[bool,exp1,exp2],如果bool为true就返回exp1,否则返回exp2

> db.test.aggregate({$project:{_id:0,iname:1, con:{$cond:[false,"$iage","$iadd"]}}},{$limit:2});

{

        "result" : [

                {

                        "iname" : "ToneyDeng",

                        "con" : "ShengZheng"

                },

                {

                        "iname" : "Jack",

                        "con" : "ShangHai"

                }

        ],

        "ok" : 1

}

  

 

(14) 运算表达式,这几个表达式可以在find和match中用来过滤文档数量

$eq/$ne/$gt/$gte/$lt/$lte:以此为(等于/不等于/大于/大于或等于/小于/小于或等于)

$and:并且

$or:或

$not:否

$in:相当于mysql中 in

$exists:某个键是否存在。

相当于 select * from tableName where iname <>”ToneyDeng” and  iage<25

> db.test.aggregate({$match:{$and:[{iname:{$ne:"ToneyDeng"}},{iage:{$lt:25}}]}});

{

        "result" : [

                {

                        "_id" : ObjectId("54c1febb570ca4579ca978e6"),

                        "id" : 2,

                        "iname" : "Jack",

                        "iage" : 24,

                        "iadd" : "ShangHai",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c20076570ca4579ca978ed"),

                        "id" : 9,

                        "iname" : "Jack",

                        "iage" : 23,

                        "iadd" : "GuangZhou",

                        "mark" : "Yahoo"

                }

        ],

        "ok" : 1

}


相当于:select * from  tableName  where id not in (1,3,5,6,7,8)  or  iname<>”ToneyDeng” and iage<25

> db.test.aggregate({$match: {$or:[{id:{$not:{$in:[1,3,5,6,7,8]}}}  ,{$and:[{iname:{$ne:"ToneyDeng"}},{iage:{$lt:25}}]}]}});

{

        "result" : [

                {

                        "_id" : ObjectId("54c1febb570ca4579ca978e6"),

                        "id" : 2,

                        "iname" : "Jack",

                        "iage" : 24,

                        "iadd" : "ShangHai",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c1ff36570ca4579ca978e8"),

                        "id" : 4,

                        "iname" : "Owen",

                        "iage" : 27,

                        "iadd" : "BeiJing",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c20076570ca4579ca978ed"),

                        "id" : 9,

                        "iname" : "Jack",

                        "iage" : 23,

                        "iadd" : "GuangZhou",

                        "mark" : "Yahoo"

                }

        ],

        "ok" : 1

}

 

键iname  是否存在

> db.test.aggregate({$match:{iname:{$exists:true}}},{$limit:2});

{

        "result" : [

                {

                        "_id" : ObjectId("54c1fe77570ca4579ca978e5"),

                        "id" : 1,

                        "iname" : "ToneyDeng",

                        "iage" : 21,

                        "iadd" : "ShengZheng",

                        "mark" : ""

                },

                {

                        "_id" : ObjectId("54c1febb570ca4579ca978e6"),

                        "id" : 2,

                        "iname" : "Jack",

                        "iage" : 24,

                        "iadd" : "ShangHai",

                        "mark" : ""

                }

        ],

        "ok" : 1

}

 

 

 

(15).group:聚合操作符

#算术操作符

$sum:求和

$avg:平均数

$max:最大值

$min:最小值

$first:第一个值

$last:最后一个值

> db.test.aggregate({$group:{_id:"$iname",count:{$sum:1},sum:{$sum:"$iage"},avg:{$avg:"$iage"},max:{$max:"$iage"},min:{$min:"$iage"}}},{$limit:2});

{

        "result" : [

                {

                        "_id" : "Tom",

                        "count" : 3,

                        "sum" : 77,

                        "avg" : 25.666666666666668,

                        "max" : 27,

                        "min" : 25

                },

                {

                        "_id" : "Owen",

                        "count" : 2,

                        "sum" : 52,

                        "avg" : 26,

                        "max" : 27,

                        "min" : 25

                }

        ],

        "ok" : 1

}

 

 

得到分组中的第一个值和最后一个值

> db.test.aggregate({$group:{_id:"$iname",ct:{$sum:1},first:{$first:"$iage"},min:{$min:"$iage"},last:{$last:"$iage"}}},{$limit:2});

{

        "result" : [

                {

                        "_id" : "Tom",

                        "ct" : 3,

                        "first" : 25,

                        "min" : 25,

                        "last" : 27

                },

                {

                        "_id" : "Owen",

                        "ct" : 2,

                        "first" : 27,

                        "min" : 25,

                        "last" : 25

                }

        ],

        "ok" : 1

}

 



4.#数组操作符

$addTOSet:expx ,如果当前数组中不包含expx就把它添加到数组中。

$push:expx,不管expx是什么值,都expx 都添加到数组中。


5.mongo聚合操作操作还可以通过以下方式实现,

不过似乎是要写js脚本,这个就有点复杂了。

mapReduce

db.runCommand():执行数据库命令


参考链接:

Http://www.cnblogs.com/shanyou/p/3494854.html

 

  


您可能感兴趣的文档:

--结束END--

本文标题: mongodb 之聚合框架--aggregate

本文链接: https://www.lsjlt.com/news/35816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mongodb 之聚合框架--aggregate
    Mongodb中的聚合框架 1 .Mongodb 中的管道操作符之简单操作,  Mongo 中的数据查询语句db.collection.find(...
    99+
    2022-10-18
  • MongoDB聚合(aggregate)
      https://www.cnblogs.com/wt7018/p/11929359.html MongoDB聚合(aggregate)   一、基础 什么是聚合? 聚合是基于数据处理的聚合管道,每个文档通过一个有多个阶段(...
    99+
    2016-08-15
    MongoDB聚合(aggregate)
  • MongoDB aggregate聚合
    aggregate相当于 相当于mysql中的group以及一系列的操作官网介绍地址:http://docs.mongodb.org/manual/reference/sql-aggregation-com...
    99+
    2022-10-18
  • MongoDB(七):聚合aggregate
    1. 聚合aggregate 聚合主要用于计算数据,类似sql中的sum()、avg() 语法: db.集合名称.aggregate([{管道:{表达式}}]) stu准备的数据: db.stu.insertMany([ { name...
    99+
    2020-03-05
    MongoDB(七):聚合aggregate
  • MongoDB(4): 聚合框架
    一、简介MongoDB的聚合框架,主要用来对集合中的文档进行变换和组合,从而对数据进行分析以加以利用。聚合框架的基本思路是: 采用多个构件来创建一个管道,用于对一连串的文档进行处理。这些构件包括:...
    99+
    2022-10-18
  • 【MongoDB学习笔记30】MongoDB的聚合框架
    使用聚合框架可以对集合中的文档进行变换和组合。用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理。这些构件包括:筛选(filtering)投射(projecting)分组(groupin...
    99+
    2022-10-18
  • Java框架之Maven SSM集合
    目录SSMMaven什么是mavenMaven好处,为什么要用Maven三种仓库坐标概念总结SSM @Controller,@Service本质都是@Component,作用是new...
    99+
    2022-11-12
  • Java集合框架之Map详解
    目录1、Map的实现2、HashMap 和 Hashtable 的区别3、介绍下对象的 hashCode()和equals(),使用场景4、HashMap和TreeMap应该怎么选择...
    99+
    2022-11-13
  • Java基础之集合框架详解
    目录一、前言二、集合的由来?三、集合和数组的区别?四、Collection集合的功能概述?五、Collection集合存储字符串并遍历?(迭代器)六、...
    99+
    2022-11-12
  • Java复习之集合框架总结
    俗话说:温故而知新。想想学过的知识,就算是以前学得很不错,久不用了,就会忘记,所以温习一下以前学习的知识我认为是非常有必要的。而本篇文件温习的是 Java基础中的集合框架。为什么会有集合框架?平时我们用数组存储一些基本的数据类型,或者是引用...
    99+
    2023-05-31
    java 集合框架 ava
  • Java集合系列之JCF集合框架概述
    Java集合框架(Java Collections Framework,JCF)是Java平台提供的一套用于存储、操作和管理对象的集...
    99+
    2023-09-23
    java
  • Java开发之ssm三大框架整合
    目录1.springmvc2.spring-dao.xml与mybatis-config.xml3.spring-service.xml4.引用1.springmvc 和只有spri...
    99+
    2022-11-13
  • Java集合框架之Set和Map详解
    目录Set接口HashSetTreeSetMap接口HashMapTreeMapSet接口 set接口等同于Collection接口,不过其方法的行为有更严谨的定义。set的add...
    99+
    2022-11-12
  • SSM框架整合之Spring+SpringMVC+MyBatis实践步骤
    目录1、基本概念1.1、Spring1.2、SpringMVC1.3、MyBatis2、开发环境搭建以及创建Maven Web项目3、SSM整合3.1、Maven引入需要的JAR包3...
    99+
    2022-11-12
  • Java 进阶必备之ssm框架全面整合
    目录1.导入依赖2.创建实体类3.写dao层接口4.写mybatis核心配置文件和接口配置文件5.用spring整合Mybatis层也就是Dao层6.spring整合Service层...
    99+
    2022-11-12
  • Java集合框架概览之ArrayList源码分析
    今天小编给大家分享一下Java集合框架概览之ArrayList源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、从一...
    99+
    2023-07-05
  • Java基础详解之集合框架工具Collections
    目录一、Collections二、Collections中的常见方法三、Aarrays:用于对数组操作的工具类四、二分查找过程中的默认比较器五、集合转化为数组六、增强for循环七、关...
    99+
    2022-11-12
  • Java集合框架入门之泛型和包装类
    目录1. 预备知识-泛型(Generic)1.1 泛型的引入1.2 泛型的分类1.3 泛型类的定义1.4 泛型编译的机制2. 预备知识-包装类(Wrapper Class)2.1 基...
    99+
    2022-11-12
  • SSM框架整合之Spring+SpringMVC+MyBatis的示例分析
    这篇文章主要介绍了SSM框架整合之Spring+SpringMVC+MyBatis的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基本概念1.1、SpringSp...
    99+
    2023-06-15
  • Java集合框架之Stack Queue Deque使用详解刨析
    目录1. Stack1.1 介绍1.2 常见方法2. Queue2.1 介绍2.2 常见方法3. Deque3.1 介绍3.2 常见方法1. Stack 1.1 介绍 Stack 栈...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作