2016-11-14 152 views
0

如何在单个查询中使用mongodb计算月迄今(MTD)和年初至今(YTD)?样本数据在这个数据requestedOn是一个日期字段,我想计算MTD &年初至今,假设在“一年一月一日”的财政年度(例如,2016年财政年度是“01-Jan-2016 “:如何计算mongodb中的YTD和MTD?

 { 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747f8" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-03-01", 
    "bookName": "Test6", 
    "revenue": 10.0, 
    "unitsSold": 1, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747f9" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-03-01", 
    "bookName": "Test1", 
    "revenue": 11.0, 
    "unitsSold": 2, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747fa" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-06-01", 
    "bookName": "Test2", 
    "revenue": 12.0, 
    "unitsSold": 3, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747fb" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-07-01", 
    "bookName": "Test3", 
    "revenue": 13.0, 
    "unitsSold": 4, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747fc" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2009-09-01", 
    "bookName": "Test4", 
    "revenue": 14.0, 
    "unitsSold": 5, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747fd" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2009-06-01", 
    "bookName": "Test5", 
    "revenue": 15.0, 
    "unitsSold": 6, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747fe" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2004-06-01", 
    "bookName": "Test10", 
    "revenue": 16.0, 
    "unitsSold": 7, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "5808578b33fa6f161c9747ff" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-01-01", 
    "bookName": "Test11", 
    "revenue": 100.0, 
    "unitsSold": 100, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages/Bartending" 
    }, 
    { 
     "categoryCode": "Food Receipe/Taste" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e462" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-02-01", 
    "bookName": "Test1", 
    "revenue": 20.0, 
    "unitsSold": 10, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e463" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2001-02-01", 
    "bookName": "Test2", 
    "revenue": 19.0, 
    "unitsSold": 9, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e464" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2001-02-01", 
    "bookName": "Test3", 
    "revenue": 18.0, 
    "unitsSold": 8, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e465" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2007-06-01", 
    "bookName": "Test4", 
    "revenue": 17.0, 
    "unitsSold": 7, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e466" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2005-06-01", 
    "bookName": "Test5", 
    "revenue": 16.0, 
    "unitsSold": 6, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e467" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2004-06-01", 
    "bookName": "Test1", 
    "revenue": 15.0, 
    "unitsSold": 5, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e468" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2002-06-01", 
    "bookName": "Test2", 
    "revenue": 14.0, 
    "unitsSold": 4, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e469" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2001-06-01", 
    "bookName": "Test3", 
    "revenue": 13.0, 
    "unitsSold": 3, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e46a" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2000-06-01", 
    "bookName": "Test4", 
    "revenue": 12.0, 
    "unitsSold": 2, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
}{ 
    "_id": { 
    "$oid": "580857b833fa6f0c3499e46b" 
    }, 
    "_class": "exceltest.TestBean", 
    "requestedOn": "2008-06-01", 
    "bookName": "Test5", 
    "revenue": 11.0, 
    "unitsSold": 1, 
    "bookCategory": [ 
    { 
     "categoryCode": "Cooking/" 
    }, 
    { 
     "categoryCode": "Cooking/Beverages" 
    }, 
    { 
     "categoryCode": "Food Receipe/" 
    }, 
    { 
     "categoryCode": "Food Receipe/Bartending" 
    } 
    ] 
} 

问候

克里斯

+0

找到请告诉我们你尝试过什么至今。 –

回答

0

这是一个很好的做法,以保持在MongoDB的日期在其原生的日期格式ISODate()

您可以使用日期格式like $一年。 $月,$日,$小时等

这些可用于编组,你的情况:

db.collectionName.aggregate([ 
      {$group:{_id:{'Date':{$year:'$requestedOn'}},total:{$sum:'$FieldName'}}} 
    ]) 

到字符串转换为ISODate,答案在

- [http://stackoverflow.com/questions/15473772/how-to-convert-from-string-to-date-data-type?noredirect=1&lq=1][2] 
    - [http://stackoverflow.com/questions/15473772/how-to-convert-from-string-to-date-data-type?noredirect=1&lq=1][2]