[{"data":1,"prerenderedAt":613},["ShallowReactive",2],{"blog-\u002Fblog\u002Fwechat_mini_program_aggregate_query":3},{"id":4,"title":5,"body":6,"category":601,"cover":602,"csdn":602,"date":603,"description":5,"draft":604,"extension":605,"meta":606,"navigation":320,"path":607,"seo":608,"stem":609,"tags":610,"updated":602,"__hash__":612},"blog\u002Fblog\u002Fwechat_mini_program_aggregate_query.md","微信小程序 聚合查询",{"type":7,"value":8,"toc":599},"minimark",[9,575,579,582,585,588,595],[10,11,16],"pre",{"className":12,"code":13,"language":14,"meta":15,"style":15},"language-javascript shiki shiki-themes github-light","\u002F\u002F普通数据查询\ndb.collection(\"china\") \u002F\u002F获取集合china的引用\n  .where({\n    \u002F\u002F查询的条件操作符where\n    gdp: _.gt(3000), \u002F\u002F查询筛选条件，gt表示字段需大于指定值。\n  })\n  .field({\n    \u002F\u002F显示哪些字段\n    _id: false, \u002F\u002F默认显示_id，这个隐藏\n    city: true,\n    province: true,\n    gdp: true,\n  })\n  .orderBy(\"gdp\", \"desc\") \u002F\u002F排序方式，降序排列\n  .skip(0) \u002F\u002F跳过多少个记录（常用于分页），0表示这里不跳过\n  .limit(10) \u002F\u002F限制显示多少条记录，这里为10，默认是20\n  .get() \u002F\u002F获取根据查询条件筛选后的集合数据\n  .then((res) => {\n    console.log(res.data);\n  })\n  .catch((err) => {\n    console.error(err);\n  });\n\n\u002F\u002F聚合查询，大家写聚合操作的时候，可以参考这样的一个模板来写\ndb.collection(\"china\")\n  .aggregate() \u002F\u002F发起聚合操作\n  .match({\n    \u002F\u002F类似于where，对记录进行筛选\n    gdp: _.gt(3000),\n  })\n  .project({\n    \u002F\u002F类似于field，在这里可以新增字段\n    _id: false, \u002F\u002F默认显示_id，这个隐藏\n    city: true,\n    province: true,\n    gdp: true,\n  })\n  .sort({\n    \u002F\u002F类似于orderBy\n    gdp: -1,\n  })\n  .skip(5) \u002F\u002F类似于skip\n  .limit(1000) \u002F\u002F类似于limit，不填默认是20，没有上限\n  .end() \u002F\u002F注意，end标志聚合操作的完成\n  .then((res) => console.log(res))\n  .catch((err) => console.error(err));\n","javascript","",[17,18,19,28,52,64,70,91,97,107,113,128,140,150,160,165,188,206,224,238,262,274,279,298,309,315,322,328,342,355,365,371,385,390,400,406,417,426,435,444,449,459,465,478,483,500,517,530,553],"code",{"__ignoreMap":15},[20,21,24],"span",{"class":22,"line":23},"line",1,[20,25,27],{"class":26},"sAwPA","\u002F\u002F普通数据查询\n",[20,29,31,35,39,42,46,49],{"class":22,"line":30},2,[20,32,34],{"class":33},"sgsFI","db.",[20,36,38],{"class":37},"s7eDp","collection",[20,40,41],{"class":33},"(",[20,43,45],{"class":44},"sYBdl","\"china\"",[20,47,48],{"class":33},") ",[20,50,51],{"class":26},"\u002F\u002F获取集合china的引用\n",[20,53,55,58,61],{"class":22,"line":54},3,[20,56,57],{"class":33},"  .",[20,59,60],{"class":37},"where",[20,62,63],{"class":33},"({\n",[20,65,67],{"class":22,"line":66},4,[20,68,69],{"class":26},"    \u002F\u002F查询的条件操作符where\n",[20,71,73,76,79,81,85,88],{"class":22,"line":72},5,[20,74,75],{"class":33},"    gdp: _.",[20,77,78],{"class":37},"gt",[20,80,41],{"class":33},[20,82,84],{"class":83},"sYu0t","3000",[20,86,87],{"class":33},"), ",[20,89,90],{"class":26},"\u002F\u002F查询筛选条件，gt表示字段需大于指定值。\n",[20,92,94],{"class":22,"line":93},6,[20,95,96],{"class":33},"  })\n",[20,98,100,102,105],{"class":22,"line":99},7,[20,101,57],{"class":33},[20,103,104],{"class":37},"field",[20,106,63],{"class":33},[20,108,110],{"class":22,"line":109},8,[20,111,112],{"class":26},"    \u002F\u002F显示哪些字段\n",[20,114,116,119,122,125],{"class":22,"line":115},9,[20,117,118],{"class":33},"    _id: ",[20,120,121],{"class":83},"false",[20,123,124],{"class":33},", ",[20,126,127],{"class":26},"\u002F\u002F默认显示_id，这个隐藏\n",[20,129,131,134,137],{"class":22,"line":130},10,[20,132,133],{"class":33},"    city: ",[20,135,136],{"class":83},"true",[20,138,139],{"class":33},",\n",[20,141,143,146,148],{"class":22,"line":142},11,[20,144,145],{"class":33},"    province: ",[20,147,136],{"class":83},[20,149,139],{"class":33},[20,151,153,156,158],{"class":22,"line":152},12,[20,154,155],{"class":33},"    gdp: ",[20,157,136],{"class":83},[20,159,139],{"class":33},[20,161,163],{"class":22,"line":162},13,[20,164,96],{"class":33},[20,166,168,170,173,175,178,180,183,185],{"class":22,"line":167},14,[20,169,57],{"class":33},[20,171,172],{"class":37},"orderBy",[20,174,41],{"class":33},[20,176,177],{"class":44},"\"gdp\"",[20,179,124],{"class":33},[20,181,182],{"class":44},"\"desc\"",[20,184,48],{"class":33},[20,186,187],{"class":26},"\u002F\u002F排序方式，降序排列\n",[20,189,191,193,196,198,201,203],{"class":22,"line":190},15,[20,192,57],{"class":33},[20,194,195],{"class":37},"skip",[20,197,41],{"class":33},[20,199,200],{"class":83},"0",[20,202,48],{"class":33},[20,204,205],{"class":26},"\u002F\u002F跳过多少个记录（常用于分页），0表示这里不跳过\n",[20,207,209,211,214,216,219,221],{"class":22,"line":208},16,[20,210,57],{"class":33},[20,212,213],{"class":37},"limit",[20,215,41],{"class":33},[20,217,218],{"class":83},"10",[20,220,48],{"class":33},[20,222,223],{"class":26},"\u002F\u002F限制显示多少条记录，这里为10，默认是20\n",[20,225,227,229,232,235],{"class":22,"line":226},17,[20,228,57],{"class":33},[20,230,231],{"class":37},"get",[20,233,234],{"class":33},"() ",[20,236,237],{"class":26},"\u002F\u002F获取根据查询条件筛选后的集合数据\n",[20,239,241,243,246,249,253,255,259],{"class":22,"line":240},18,[20,242,57],{"class":33},[20,244,245],{"class":37},"then",[20,247,248],{"class":33},"((",[20,250,252],{"class":251},"sqxcx","res",[20,254,48],{"class":33},[20,256,258],{"class":257},"sD7c4","=>",[20,260,261],{"class":33}," {\n",[20,263,265,268,271],{"class":22,"line":264},19,[20,266,267],{"class":33},"    console.",[20,269,270],{"class":37},"log",[20,272,273],{"class":33},"(res.data);\n",[20,275,277],{"class":22,"line":276},20,[20,278,96],{"class":33},[20,280,282,284,287,289,292,294,296],{"class":22,"line":281},21,[20,283,57],{"class":33},[20,285,286],{"class":37},"catch",[20,288,248],{"class":33},[20,290,291],{"class":251},"err",[20,293,48],{"class":33},[20,295,258],{"class":257},[20,297,261],{"class":33},[20,299,301,303,306],{"class":22,"line":300},22,[20,302,267],{"class":33},[20,304,305],{"class":37},"error",[20,307,308],{"class":33},"(err);\n",[20,310,312],{"class":22,"line":311},23,[20,313,314],{"class":33},"  });\n",[20,316,318],{"class":22,"line":317},24,[20,319,321],{"emptyLinePlaceholder":320},true,"\n",[20,323,325],{"class":22,"line":324},25,[20,326,327],{"class":26},"\u002F\u002F聚合查询，大家写聚合操作的时候，可以参考这样的一个模板来写\n",[20,329,331,333,335,337,339],{"class":22,"line":330},26,[20,332,34],{"class":33},[20,334,38],{"class":37},[20,336,41],{"class":33},[20,338,45],{"class":44},[20,340,341],{"class":33},")\n",[20,343,345,347,350,352],{"class":22,"line":344},27,[20,346,57],{"class":33},[20,348,349],{"class":37},"aggregate",[20,351,234],{"class":33},[20,353,354],{"class":26},"\u002F\u002F发起聚合操作\n",[20,356,358,360,363],{"class":22,"line":357},28,[20,359,57],{"class":33},[20,361,362],{"class":37},"match",[20,364,63],{"class":33},[20,366,368],{"class":22,"line":367},29,[20,369,370],{"class":26},"    \u002F\u002F类似于where，对记录进行筛选\n",[20,372,374,376,378,380,382],{"class":22,"line":373},30,[20,375,75],{"class":33},[20,377,78],{"class":37},[20,379,41],{"class":33},[20,381,84],{"class":83},[20,383,384],{"class":33},"),\n",[20,386,388],{"class":22,"line":387},31,[20,389,96],{"class":33},[20,391,393,395,398],{"class":22,"line":392},32,[20,394,57],{"class":33},[20,396,397],{"class":37},"project",[20,399,63],{"class":33},[20,401,403],{"class":22,"line":402},33,[20,404,405],{"class":26},"    \u002F\u002F类似于field，在这里可以新增字段\n",[20,407,409,411,413,415],{"class":22,"line":408},34,[20,410,118],{"class":33},[20,412,121],{"class":83},[20,414,124],{"class":33},[20,416,127],{"class":26},[20,418,420,422,424],{"class":22,"line":419},35,[20,421,133],{"class":33},[20,423,136],{"class":83},[20,425,139],{"class":33},[20,427,429,431,433],{"class":22,"line":428},36,[20,430,145],{"class":33},[20,432,136],{"class":83},[20,434,139],{"class":33},[20,436,438,440,442],{"class":22,"line":437},37,[20,439,155],{"class":33},[20,441,136],{"class":83},[20,443,139],{"class":33},[20,445,447],{"class":22,"line":446},38,[20,448,96],{"class":33},[20,450,452,454,457],{"class":22,"line":451},39,[20,453,57],{"class":33},[20,455,456],{"class":37},"sort",[20,458,63],{"class":33},[20,460,462],{"class":22,"line":461},40,[20,463,464],{"class":26},"    \u002F\u002F类似于orderBy\n",[20,466,468,470,473,476],{"class":22,"line":467},41,[20,469,155],{"class":33},[20,471,472],{"class":257},"-",[20,474,475],{"class":83},"1",[20,477,139],{"class":33},[20,479,481],{"class":22,"line":480},42,[20,482,96],{"class":33},[20,484,486,488,490,492,495,497],{"class":22,"line":485},43,[20,487,57],{"class":33},[20,489,195],{"class":37},[20,491,41],{"class":33},[20,493,494],{"class":83},"5",[20,496,48],{"class":33},[20,498,499],{"class":26},"\u002F\u002F类似于skip\n",[20,501,503,505,507,509,512,514],{"class":22,"line":502},44,[20,504,57],{"class":33},[20,506,213],{"class":37},[20,508,41],{"class":33},[20,510,511],{"class":83},"1000",[20,513,48],{"class":33},[20,515,516],{"class":26},"\u002F\u002F类似于limit，不填默认是20，没有上限\n",[20,518,520,522,525,527],{"class":22,"line":519},45,[20,521,57],{"class":33},[20,523,524],{"class":37},"end",[20,526,234],{"class":33},[20,528,529],{"class":26},"\u002F\u002F注意，end标志聚合操作的完成\n",[20,531,533,535,537,539,541,543,545,548,550],{"class":22,"line":532},46,[20,534,57],{"class":33},[20,536,245],{"class":37},[20,538,248],{"class":33},[20,540,252],{"class":251},[20,542,48],{"class":33},[20,544,258],{"class":257},[20,546,547],{"class":33}," console.",[20,549,270],{"class":37},[20,551,552],{"class":33},"(res))\n",[20,554,556,558,560,562,564,566,568,570,572],{"class":22,"line":555},47,[20,557,57],{"class":33},[20,559,286],{"class":37},[20,561,248],{"class":33},[20,563,291],{"class":251},[20,565,48],{"class":33},[20,567,258],{"class":257},[20,569,547],{"class":33},[20,571,305],{"class":37},[20,573,574],{"class":33},"(err));\n",[576,577,578],"p",{},"这里的match、project、sort、skip、limit、end都是聚合阶段在写聚合查询时有几个需要注意的点：",[576,580,581],{},"aggregate()是发起一个聚合操作\nmatch是根据条件过滤文档，进行的是查询匹配，语法和where比较类似；\nproject把指定的字段传递给下一个流水线，指定的字段可以是某个已经存在的字段，也可以是计算出来的新字段，它和field不同的是可以新增一些不存在的字段（只是显示用，没写进数据库）；\nsort根据指定的字段，对输入的文档进行排序，1 代表升序排列（从小到大）；-1 代表降序排列（从大到小），功能和orderBy类似；\n小程序端limit默认 20，也就是如果你使用聚合查询，你查询到的数据都会默认显示20条数据，但是你可以设置更多（但是不要太大，基本没有上限，除了整个数据不能超过16M外），而普通查询是不能超过20条的；\nend()标志着聚合操作的完成\n注意聚合返回的结果是list数组对象，res.list才是数组，这和普通数据查询有所不同",[576,583,584],{},"云数据库命令与SQL语句对应理解",[576,586,587],{},"云开发数据库是非关系文档型数据库，和MySQL这种关系型数据库在使用上有不少的差异和联系，下面是云数据库与SQL语句之间的对应立即理解：",[576,589,590],{},[591,592],"img",{"alt":593,"src":594},"在这里插入图片描述","https:\u002F\u002Fpub-5ec96507162a4f0a8e713a916117c9f4.r2.dev\u002Fblog\u002F5ea48975878197dd80c6e188c34846d1.png#pic_center",[596,597,598],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":15,"searchDepth":30,"depth":30,"links":600},[],"前端",null,"2021-01-05",false,"md",{},"\u002Fblog\u002Fwechat_mini_program_aggregate_query",{"title":5,"description":5},"blog\u002Fwechat_mini_program_aggregate_query",[611],"微信小程序","VyQ92pS1qC7DFQFDMquo7xw17lCr2gGP7GVWUiRSOV4",1782922504649]