首页 > 代码库 > 先排序,再限定记录数,然后计算指定字段的总和
先排序,再限定记录数,然后计算指定字段的总和
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操作目前是在内存中进行的,所以不能用它来对大量个数的文档进行分组。
先排序,再限定记录数,然后计算指定字段的总和