• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

[教程]MongoDB 从入门到进阶 (aggregation数据库状态)

mysql 搞代码 4年前 (2022-01-09) 36次浏览 已收录 0个评论

下载地址: GitHub:https://github.com/magicdict/MagicMongoDBTool 在开始介绍这节之前,我来说说我开发这个工具的意义。 我不敢保证以后MongoDB可以大红大紫,也无法保证MongoDB以后会分享很多很多市场份额。 现在开发这个东西,一年后可能Mongo倒闭了,这

下载地址:

GitHub: https://github.com/magicdict/MagicMongoDBTool

在开始介绍这节之前,我来说说我开发这个工具的意义。

我不敢保证以后MongoDB可以大红大紫,也无法保证MongoDB以后会分享很多很多市场份额。

现在开发这个东西,一年后可能Mongo倒闭了,这个工具就是一个垃圾。一年后,Mongo修成正果,香港服务器,这个工具就是香饽饽。

等所有人都觉得这个东西会火,你才去关注,开发工具,就晚了。花点业余时间,开发Mongo工具的同时,香港服务器租用,最主要去学习一下大数据的一些思想,例如副本,分片概念。

还有就是阶层数据库的一些实现的方法。当然,由于3年前才开始从VB.NET转C#的,也希望通过多些编码将C#用身体记住。

[aggregation Framework]

例子1

aggregation Framework 是MongoDB的一个功能强大的统计框架,这里就演示一下这个框架的使用方法。

首先,我们新建一个aggregation数据集。然后再按照官方文档的样子,使用MongoCola插入一个文档。(将下面这段JSON直接粘贴到新建文档的窗体里面就可以了)

{ title : “this is my title” , author : “bob” , posted : new Date() , pageViews : 5 , tags : [ “fun” , “good” , “fun” ] , comments : [{ author :“joe” , text : “this is cool” } ,{ author :“sam” , text : “this is bad” } ], other : { foo : 5 }}

1.$project

这个操作符号,可以用来做Select 的操作。用来指定显示的列。

{ $project : {title : 1 ,author : 1}}

这里表示我们只是需要title和author列的信息。

这里的参数1:表示 0:非表示。 _id是一个默认的表示项目,我们可以通过将_id设置为0,告诉系统不表示这个项目。

{ $project : {_id : 0 ,title : 1 ,author : 1}}

当然,你也可以新建一个字段,例如一个doctoredPageViews字段,这个字段是在原有字段的基础上加工而成的值。

就如 SQL中的,Select (pageViews + 10 As doctoredPageViews) from table

{ $project : {title : 1,doctoredPageViews : { $add:[“$pageViews”, 10] }}}

当然你也可以重新命名列名

{ $project : {title : 1 ,page_views : “$pageViews” ,bar : “$other.foo”}}

最后你也可以通过Project操作符,来构建你想要的文档结果。下面这个例子里面的Status就是一个新建的子文档

{ $project : {title : 1 ,stats : {pv : “$pageViews”,foo : “$other.foo”,dpv : { $add:[“$pageViews”, 10] }}}}

2$match这个操作符号,有点类似于Select文的Where条件。例如我们想寻找author是bob的记录:

{ $match : { author : “bob” } }

这个Aggregate框架里面的各种操作符号是可以任本文来源gaodai$ma#com搞$代*码网2意组合的。我们可以既有match操作,又有project操作。

这里我们用工具将两种操作的条件分别加上。

注意:这里我们已经添加了2个条件了。第一个是match,第二个是project。

例子2

下面是例子的测试数据

{ “_id” : “1”, “User” : “Tom”, “Country” : “Finland”, “Count” : 1 }{ “_id” : “2”, “User” : “Tom”, “Country” : “Finland”, “Count” : 3 }{ “_id” : “3”, “User” : “Tom”, “Country” : “Finland”, “Count” : 2 }{ “_id” : “4”, “User” : “Mary”, “Country” : “Sweden”, “Count” : 1 }{ “_id” : “5”, “User” : “Mary”, “Country” : “Sweden”, “Count” : 7 }

我们找一下是User是Tom,Count >= 2 的记录

{ $match : {User: “Tom”,Count:{“$gte”: 2}} }

4

关于操作符号:

3 $Group

我们对于User进行Group操作,并且对于Count进行合计

注意,这里必须要有一个_id字段来表示Group的条件

{ $group : {_id : { “MyUser”: “$User” }TotalCount : { $sum : “$Count” }}}

结果就是Mary的合计值是8,Tom则是6.

MyUserSUM(Count) AS TotalCount

我们再次添加一条记录


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[教程]MongoDB 从入门到进阶 (aggregation数据库状态)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址