Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Mongoose/NodeJS中计算时间戳字段中的不同日期项?_Node.js_Mongodb_Mongoose_Mongodb Query_Aggregation Framework - Fatal编程技术网

Node.js 如何在Mongoose/NodeJS中计算时间戳字段中的不同日期项?

Node.js 如何在Mongoose/NodeJS中计算时间戳字段中的不同日期项?,node.js,mongodb,mongoose,mongodb-query,aggregation-framework,Node.js,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我在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)

我在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)的不同项目的计数


编辑:理想情况下,我希望获得每个不同日期的记录计数。

您需要的是使用聚合框架和命令,至少可以根据您的要求查找一个日期:

SomeSchema.aggregate(
[
{“$match”:{
“日期”:{
“$gte”:新日期(“2014-05-08”),“$lt”:新日期(“2014-05-09”)
}
}},
{“$组”:{
“\u id”:“$some\u item”,
“计数”:{“$sum”:1}
}}
],
函数(错误、结果){
//做一些有结果的事情
}
);
如果您专门查找多个日期的“计数”,则可以执行以下操作:

SomeSchema.aggregate(
[
{“$match”:{
“日期”:{
“$gte”:新日期(“2014-05-01”),“$lt”:新日期(“2014-06-01”)
}
}},
{“$组”:{
“_id”:{
“年”:{“$year”:“$date”},
“月”:{“$month”:“$date”},
“日”:{“$dayOfMonth”:“$date”}
}
“计数”:{“$sum”:1}
}}
],
函数(错误、结果){
//做一些有结果的事情
}
);

这就给了你“每天”的分组。如果您希望进一步了解,请查看文档中的。

根据mongoose文档。Model.distinct(字段、条件、回调);我的条件是什么?区别不是个好主意。它只是mapReduce的包装器,因此运行速度比aggregation framework alternative.fantactive慢得多。我也能为所有独特的日期这样做吗?或者我必须在循环中选择每个日期,然后计算该日期的不同记录?回答得好。尼尔,你在第二个例子中忘记了你的
\u id
定义。@JohnnyHK谢谢你,再次感谢你。你怎么还不是版主?@GPX我想这里面有一个编辑,展示了如何找到单一的日期边界,并按它们分组