当前位置: 首页 > news >正文

医院网站建设的特点网站建设容易出现的问题

医院网站建设的特点,网站建设容易出现的问题,摄影网站cnu视觉联盟,中山 家居 骏域网站建设专家个人博客 整理mongodb文档:聚合管道 个人博客#xff0c;求关注#xff0c;电脑版看体验更加#xff0c;如果不够清晰#xff0c;请指出来#xff0c;谢谢 文章概叙 文章主要通过几个常用的聚合表达式来介绍聚合管道的使用#xff0c;以及从索引的角度来介绍聚合管道…个人博客 整理mongodb文档:聚合管道 个人博客求关注电脑版看体验更加如果不够清晰请指出来谢谢 文章概叙 文章主要通过几个常用的聚合表达式来介绍聚合管道的使用以及从索引的角度来介绍聚合管道的限制让大家对聚合管道有一个理解。 聚合管道 聚合操作处理数据记录和 return 计算结果。聚合操作将来自多个文档的值组合在一起并且可以对分组数据执行各种操作以返回单个结果。 如果说索引能帮我们解决查得慢的问题那么聚合就能帮我们解决查得复杂的问题。使用聚合管道就是为了解决复杂的sql的问题尤其是涉及到多个表的、复杂的查询。 聚合表达式 聚合表达式是我们整个聚合管道学习的核心其中使用的aggregate方法就是我们用来做聚合操作的工具。 aggregate的使用方式如下 db.test.aggregate()接下来举一个博客网站留评论的例子给大家讲解下几个常用的表达式看完例子对于aggragate也能熟悉。 假设有如下两张表article表示文章comment表示评论。 在article表中存储着代表一篇博客的信息内容如下 在代表文章的article表中我们用article_id作为文章的唯一标识不使用默认的_id。其中的can_comment字段表示该博客是否允许评论。 现在的业务逻辑如下当我们后台接收到前端的新增评论的请求时我们需要在comment表中新增一条评论。 正常的情况下我们会去用find方法去article表中查询是否有满足可以评论的数据再用insertOne去comment表中新增一条记录整体看下来至少需要两个sql。但使用聚合管道则只需要一个sql就可以做到同样的事情。所以遇到相似的业务的时候基本都会选择使用aggregate来完成我们的业务。 接下来使用aggregate来实现我们上述两步的逻辑。 使用$match从article表中查看是否有符合条件的记录。 过滤文档流以仅允许匹配的文档未经修改地传递到下一个管道阶段。 $match使用标准的 MongoDB 查询。对于每个输入文档输出一个文档(匹配)或零文档(不匹配)。 db.article.aggregate([{$match: {can_comment: true,article_id:1}}])返回结果如下筛选出了我们选中的记录 2.在第一步中我们得到了一个数组对象但是我们只需要一个文章的id此时可以使用$project对字段进行保留跟丢弃下方的例子就直接保留article_id以及删除 重新整形流中的每个文档例如添加新字段或删除现有字段。对于每个输入文档输出一个文档。 有关删除现有字段请参见$unset。 db.article.aggregate([{$match: {can_comment: true,article_id: 1}},{$project: {article_id: 1,_id: 0}}])​3.我们需要将整理出来的数据放到comment表中但是我们需要用$addFields来增加评论内容的字段 向文档添加新字段。类似于 p r o j e c t project projectaddFields重塑了流中的每个文档;具体而言通过向输出文档添加新字段该文档包含输入文档和新添加字段中的现有字段。 s e t 是 set是 set是addFields的别名。 添加了comment之后的sql如下 db.article.aggregate([{$match: {can_comment: true,article_id: 1}},{$project: {article_id: 1,_id: 0}},{$set: {comment: 文章的评论,commentator: mk,comment_time:2023-08-22 18:00:00}} ​])此时数据整理完毕我们需要用到$merge方法将其写入到comment表中了 将聚合管道的结果文档写入集合。这个阶段可以将结果合并到一个输出集合中(插入新文档、合并文档、替换文档、保留现有文档、操作失败、使用自定义更新管道处理文档)。要使用$merge阶段它必须是管道中的最后一个阶段。version 4.2 中的新功能 db.article.aggregate([{$match: {can_comment: true,article_id: 1}},{$project: {article_id: 1,_id: 0}},{$set: {comment: 文章的评论,commentator: mk,comment_time: 2023-08-22 18:00:00}}, {$merge: {into: comment}} ​])当然上述的代码是建立在自己article表中有该条数据的情况下接下来贴一张在article表中查询没有数据时候的运行结果​ 可以看到由于在article表中查不到数据所以后续的操作都被取消​了。 聚合管道限制 聚合管道能满足我们许多复杂的需求能让我们在db层就将我们的数据整理好而不是通过一个又一个find方法去查询索引能帮我们快速的查询。而聚合能帮我们做复杂的数据。因此我们需要处理好索引跟聚合管道的关系防止顾此失彼。 举一个例子在一个集合中使用$facet起一个别名作为数据 在同一组输入文档的单个阶段内处理多个聚合管道。允许创建能够在单个阶段中跨多个维度或方面描述数据的多面聚合。 db.article.aggregate([{$facet: {article_list: [{$match: {can_comment: true}}] ​}} ​])该例子直接去article表中查询能够评论的文章然后将其赋名为article_list。​结果如下 此时我们使用explain查看查询的​状态看看是否使用到了索引。 db.article.aggregate([{$facet: {article_list: [{$match: {can_comment: true}}] ​}} ​]).explain(executionStats)但是如果直接使用$match呢 db.article.aggregate([{$match: {can_comment: true}}]).explain()​ 可以看到当我们使用$facet在最外围的时候是不使用index查询的就会导致很慢而我们直接使用$match的时候使用索引就会让查询时间大大的优化。 其他例子还有很多这儿只是举个例子如果出现了查询缓慢的情况我建议使用explain看下运行结果。​ allowDiskUse 必须要提一嘴的是关于16mb的内存前面提及到了aggregate会将数据整理完返回给我们的后台但是很多时候会报错显示内存超过16MB这是可以设置allowDiskUse为true。当前的代码是在shell中使用​建议大家自己去官网下查看。​ 单用途聚合操作 单用途聚合操作顾名思义指的是用途单一的聚合管道主要包括下面三种计数的方法但是了解了之后会发现基本都是用来统计数量的现在列举如下 1.estimatedDocumentCount 统计文档总数返回集合或视图中所有文档的计数。该方法包装count命令。 db.test.estimatedDocumentCount()2.count 也是一种计数的方式但是可以添加条件使用方法如下 db.test.count()db.test.count({string:a})3.distinct 查询不同值并返回一个数组包含所有的结果 db.test.distinct(string)最后的话 本文章不会详细介绍每一个表达式的优缺点只会告诉大家要注意的点最常用的表达式会后面再写​。毕竟框架搭建好了添砖加瓦的事情可以慢慢来,aggregate的难度不大就跟积木一样不断的组装完成我们的需求​
http://www.hkea.cn/news/14575656/

相关文章:

  • 建设银行网站首页如何网站托管
  • 网站平台建设是什么外贸客户搜索软件
  • 网站免费视频网站建设制作公司知道万维科技
  • 网站导航三角怎么做做网站写的代号好跟不好的区别
  • 深圳nft网站开发公司镇海企业建站
  • git网站开发中国制造网效果怎么样
  • 网站的域名都有哪些问题影视网站建设目的
  • 服务器与网站吗大连旅顺房价
  • 做网站建设找哪家好win8.1 做网站服务器
  • 软件开发全流程网站优化最为重要的内容是
  • wordpress 做网课网站科技类特长生有哪些项目
  • 长沙市做网站的网站吉林省交通建设集团有限公司网站
  • 网站栏目设置完整度建设小白怎么做网页
  • 设计logo网站知乎招聘网站做销售
  • 怎么优化网站排名才能起来广东vs北控直播
  • 湖南高端网站制作公司如何制作一网站
  • 沈阳做网站在哪桂林红豆网论坛
  • 网站建设常用的6大布局加代码网页游戏大全slg
  • 中跃建设集团网站吗WordPress怎么两个标题
  • 精准扶贫网站建设的意义windows优化大师的作用
  • 商丘做网站公司新站seo快速收录网站内容页wordpress响应式
  • 个人免费网站平台哪个好网站建设开发协议
  • 手机网站页面设计要求seo比较好的优化
  • 长春网页建站模板厦门网站设计大概多少钱
  • 决定网站打开的速度网站系统建设需要什么资质
  • 网页与网站设计实验总结大连网络seo公司
  • 做物流的网站有哪些功能四川省建筑施工企业安全员考试
  • 杭州模板网站建站中国科技成就的例子
  • 河北定制网站建设产业资阳seo优化公司
  • 网站论坛 备案免费大数据网站