我在NodeJS中使用Mongoose,我有一个包含这样文档的集合 -
var SomeSchema = new Schema({
date: {
type: Date,
default: new Date()
},
some_item: {
type: String
}
});
date
字段包含带有时间组件的日期(例如,2014-05-09 09:43:02.478Z
)。如何计算给定日期的不同项目,例如2014-05-08
?
编辑:理想情况下,我想获得每个不同日期的记录数。
答案 0 :(得分:2)
你想要的是聚合框架与aggregate()
命令的使用,至少在你问的时候找到一个日期:
SomeSchema.aggregate(
[
{ "$match": {
"date": {
"$gte": new Date("2014-05-08"), "$lt": new Date("2014-05-09")
}
}},
{ "$group": {
"_id": "$some_item",
"count": { "$sum": 1 }
}}
],
function(err,result) {
// do something with result
}
);
如果你是专门寻找"计数"在几个日期,你可以做这样的事情:
SomeSchema.aggregate(
[
{ "$match": {
"date": {
"$gte": new Date("2014-05-01"), "$lt": new Date("2014-06-01")
}
}},
{ "$group": {
"_id": {
"year": { "$year": "$date" },
"month": { "$month": "$date" },
"day": { "$dayOfMonth": "$date" }
}
"count": { "$sum": 1 }
}}
],
function(err,result) {
// do something with result
}
);
这给了你"每天"分组。如果您希望进一步了解,请在文档中查找date aggregation operators。