先排序,再限定记录数,然后计算指定字段的总和

mongo XXXX:27017

mongo 127.0.0.1:27017(localhost)
show databases
use xx(数据库)
db
show collections

无结果//db.proccessedfile.aggregate([{$match:{dataNumber:{$gte:1,$lte:9}}},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
无结果//db.proccessedfile.aggregate([{$match:{dataNumber:{$lte:9}}},{$group:{_id:"$sum",sum:{$sum:"$dataNumber"}}}])
db.proccessedfile.aggregate([{$match:{dataNumber:{$gte:1}}},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
db.proccessedfile.aggregate([{$limit:9},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
db.proccessedfile.aggregate([{$sort:{processedDate:-1}},{$limit:2},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])

{$sort:{_id:1}}], {cursor:{batchSize:0},explain:true}, aggregate追加用,$group后,

例:db.test1.aggregate([{$match:{status:"A"}},{$group:{_id:"$cust_id",

max_amout:{$max:"$amount"}}},{$sort:{_id:1}}], {cursor:{batchSize:0},explain:true});
**

db.proccessedfile.aggregate([{$sort:{processedDate:-1}},{$limit:2},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
//先排序,再限定记录数,然后计算指定字段的总和
db.getCollection(‘proccessedfile‘).aggregate([{$sort:{processedDate:1}},{$limit:400},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])

//db.proccessedfile.aggregate([{$match:{dataNumber:{$gte:1,$lte:9}}},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
//db.proccessedfile.aggregate([{$match:{dataNumber:{$lte:9}}},{$group:{_id:null,sum:{$sum:"$dataNumber"}}}])
db.proccessedfile.find().sort({"processedDate" : -1}).limit(9)
var cursor = db.proccessedfile.find().sort({"processedDate" : -1}).limit(9)

cursor.forEach( function(doc) { printjson(doc);});
//cursor.hasNext()
//for(){
var doc = cursor.next();
printjson(doc);

}

var map = function(){ emit(this._id,this.dataNumber); }
var reduce = function(_id,dataNumber){ return { _id:_id,dataNumber:dataNumber } }
db.runCommand({
mapReduce:‘proccessedfile‘,
map:map,
reduce:reduce,
query:this.limit(9),
out:‘res2‘
})
db.runCommand({ mapReduce:‘proccessedfile‘, map:map, reduce:reduce, out:{inline:1} })

图片补充:

注意(_id对应的value可以直接指定为null值)

$group:

_id必须的,"$Acnt_Id"是指定的统计字段 #sum 随便定的输出字段名 $sum 求和 “$_id"求和的字段
$group的时候必须要指定一个_id域,同时也可以包含一些算术类型的表达式操作符:
db.article.aggregate(
{ $group : {
_id : "$author",
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}});

注意:  1.$group的输出是无序的。
          2.$group操作目前是在内存中进行的,所以不能用它来对大量个数的文档进行分组。

时间: 2024-10-11 17:21:07

先排序,再限定记录数,然后计算指定字段的总和的相关文章

分页总数计算,根据总记录数获取分页总数_目标科技

分页总数计算,根据总记录数获取分页总数,本文章提供5种写法,大家感觉哪个好用就拿去用吧. int pageSize = 20; //每页记录数量 int totalCount = 100005; //总记录数 int pageCount; //总页数 //方法一: pageCount = (totalCount + pageSize - 1) / pageSize; //推荐写法 //方法二: pageCount = (totalCount - 1) / pageSize + 1; //方法三:

数式计算(递归解法)

1 /** 2 *注:1.有一个bug(以及未知什么bug) 我已知的是: ([email protected])(ps:@为运算符),这种带括号的表达式不能单独的出现,否则异常退出,,但是只要([email protected])@n 3 4 带括号的表达式出现任意+,-,*,/的运算都能进行正常运算(前面 [email protected]([email protected])也不可以)...不知道为什么()表达式后面没有操作时会异常退出. 5 *不知道如何解决.希望感兴趣的人帮帮忙! 6

[MSSQL]如何高效查询表的总记录数

如何高效查询表的总记录数?[总结-整理-马克] 首先想到的自然是在表主键上应用COUNT函数来查询了,这个是目前使用最多的方法,没有之一 SELECT COUNT(1) ROWS FROM product 这里再给出一些其它方法,这些方法或多或少会有一些限制,或者看起来不是那么"完美",但依然有一定的借鉴意义,信息量不大,请客官慢用 另类方法1 充分利用系统自带的存储过程SP_SPACEUSED,详细的使用方式推荐谷哥或度娘,看代码 EXEC SP_SPACEUSED 'PRODUCT

6.数的计算(递归算法)

数的计算(递归算法) 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.          不作任何处理; 2.          在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.          加上数后,继续按此规则进行处理,直到不能再加自然数为止.

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成"去重"与"排序"的工作. Input Param n               输入随机数的个数 inputArray      n个随机整数组成的数组 Return Value

luogu P1028 数的计算 x

P1028 数的计算 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3.加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入输出格式 输入格式: 一个自然数n(n<=1000) 输出格式: 一个整数,表示具有该性质数的个数. 输入输出样例 输入样例#1: 6 输出样例#1: 6 说明 满足条件的数为 6,1

通过ResultSet获取到rs的记录数的几种方法

方法一:利用ResultSet的getRow方法来获得ResultSet的总行数 ResultSet rs = ps.executeQuery(sql); rs.last(); //移到最后一行 int rowCount = rs.getRow();//得到当前行号,也就是记录数 rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置 方法二:利用循环ResultSet的元素来获得ResultSet的总行数 ResultSet rs = ps.executeQuer

Hadoop中map数的计算

转载▼ Hadoop中在计算一个JOB需要的map数之前首先要计算分片的大小.计算分片大小的公式是: goalSize = totalSize / mapred.map.tasks minSize = max {mapred.min.split.size, minSplitSize} splitSize = max (minSize, min(goalSize, dfs.block.size)) totalSize是一个JOB的所有map总的输入大小,即Map input bytes.参数map

ACM——数的计算

数的计算——(递归(超时)和非递归) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:1050            测试通过:312 描述 要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:1. 不作任何处理;2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入 一个自然数n