先排序,再限定记录数,然后计算指定字段的总和
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中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,
Google BigQuery 选择记录中所有嵌套字段的总和