今天与大家
分享mondb更有趣的知识,包括:聚集、光标。
1:聚合
常见的聚合
操作与SQL Server相同,包括计数、区分、组、MapReduce。
计数
算是最简单的,最简单,最常用的聚合器,它的使用是完全一样的使用我们的C #伯爵。
不同的
这个操作相信大家也很熟悉,谁是指定的,谁也不能重复,直接在地图上。
组
这有一点复杂在mondb做组行动,但人们都很熟悉SQL Server组
可以看到,事实上,集团运作基本上形成一个K-V模型,类似于C #,好的词典,这种思维,
让我们看看如何使用组。
下面的例子是按年龄
执行组操作,值是相应年龄的名称。
这是分组的关键,我们是来分组的。
初始化:每个组共享一个初始化
函数,特别注意每个组,如这个年龄= 20的值列表,共享一个。
初始函数,年龄= 22也共享初始函数。
函数的第一个
参数是当前
文档对象,第二个参数是最后一个函数操作的累积对象,第一次。
{个人:{ } }始。多少
文件,有多少次的减少将给美元。
有一种感觉,我们可以通过年龄看到相应的姓名人员,但有时我们可能有以下要求:
(1)想过滤掉一些年龄超过25的人员。
(2)有时人数组中有太多的人,我想添加一个计数
属性来标记它。
对于上述需求,在组中做是好的,因为组有这两个可选参数:
条件和终结。
条件:这是过滤条件。
完成:这是一个函数,当执行每一组文档时,它会触发更多的
方法,然后将计数添加到每个集合中。
MapReduce
这是聚合函数中最复杂的一个,但是它越复杂,它就越复杂,它就越灵活。
MapReduce实际上是一种用于分布式计算的编程模型,其中有一个map函数和一个减函数。
(1)地图:
这称为映射函数,它调用发出(键,值),集合根据您指定的键映射组。
减少:
这称为简化函数,map分组后的数据将被分组。注意,减少(key,value)中的键是相同的。
钥匙发出,价值是集发射(值)后发出的分组,这里是很多{计数的阵列:1 })。
(3)MapReduce:
这是最后一次执行的函数,参数是map,减少,还有一些可选参数:
从图表中我们可以看到以下信息:
结果:商店的集合名;
输入的文档数量:传递给文档。
发出:调用此函数的次数。
减少:这个函数被调用的次数。
输出:返回文档结尾处的文档数。
最后,让我们来看看案例中的集合集合的
名字。
二:光标
在mondb光标是在C #我们所说的延迟有点相似,如:
var list = db.person.find();
针对这样的操作,列表实际上并没有亲自得到文档,但肯定了
查询结构,当我们需要时它会被传递。
为立即或下一次加载,然后让光标逐行读取。在我们完成枚举之后,光标被销毁,然后我们通过列表获得它。
结果
发现没有返回数据。
当然,我们的查询结构也可以使复杂的点,如分页、
排序可以添加。
VaR单= db.person.find()。排序({的名字
这样的查询构造可以在需要执行的时候执行,大大提高了不必要的开销。