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

Posted tangyongathuse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了先排序,再限定记录数,然后计算指定字段的总和相关的知识,希望对你有一定的参考价值。

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操作目前是在内存中进行的,所以不能用它来对大量个数的文档进行分组。

以上是关于先排序,再限定记录数,然后计算指定字段的总和的主要内容,如果未能解决你的问题,请参考以下文章

mysql中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,

oracle 如何查询指定记录行数的记录

Google BigQuery 选择记录中所有嵌套字段的总和

SQL 统计个数;条件:指定行间,指定字段值等于A的记录数。

sql分页存储过程,带求和排序

SQL——SQL函数