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

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

posted @ 2017-07-08 15:37  tangyongathuse  阅读(292)  评论(0编辑  收藏  举报