0
查询集合我在MongoDB中收集这种格式的MongoDB:基于日期
db.logins.find().pretty()
{
"cust_id" : "samueal",
"created_at" : "2011-03-09 10:31:02.765"
}
{
"cust_id" : "sade",
"created_at" : "2011-03-09 10:33:11.157"
}
{
"cust_id" : "sade",
"created_at" : "2011-03-10 10:33:35.595"
}
{
"cust_id" : "samueal",
"created_at" : "2011-03-10 10:39:06.388"
}
这是我的MapReduce功能
m = function() { emit(this.cust_id, 1); }
r = function (k, vals) { var sum = 0; for (var i in vals) { sum += vals[i]; } return sum; }
q = function() {
var currentDate = new Date();
currentDate.setDate(currentDate.getDate()-32);
var month = (currentDate.getMonth() < 10 ? "0"+ (currentDate.getMonth()+1) : (currentDate.getMonth()+1));
var date = currentDate.getFullYear() + "-" + month ;
var patt = new RegExp(date);
var query = {"created_at":patt};
return query;
}
res = db.logins.mapReduce(m, r, { query : q(), out : "userLoginCountMonthly" });
有了这个我歌厅输出
{ "_id" : "sade", "value" : 2 }
{ "_id" : "samueal", "value" : 2 }
但我需要genearte报告输出在这种格式
对于实例
Name Date Logins
sade 2011-03-09 1
sade 2011-03-10 2
samueal 2011-03-09 1
samueal 2011-03-10 1
有谁请帮助我如何才达到,其
编辑部分
目前我得到的输出作为
{ "_id" : "dsstest 2011-03-09", "value" : 4 }
{ "_id" : "dsstest 2011-03-10", "value" : 14 }
难道我可以得到这种格式
{ "_id" : "dsstest" , "date" : "2011-03-09", "value" : 4 }
{ "_id" : "dsstest" , "date" : "2011-03-10", "value" : 14 }
我想修改我的查询,以便它返回集合中的所有数据,如果它小于昨天,但它给出错误,请参阅已编辑的部分。 – user974802 2013-05-02 17:59:05
将日期作为字符串存储在数据库中并不是最好的方式,因为它确实影响了你想做的事情。如果你想要的只是今天不包括在结果中,你最好忽略最终报告中今天的日期,或者修改你的地图功能。我更新了我的答案。 – 2013-05-02 18:08:45
我不能使用里面的查询作为var query = {created_at:{$ lt:“2011-11-11”}} – user974802 2013-05-02 18:17:36