{
"_id" : ObjectId("5a4212b49e710765c486d7c6"),
"student_id" : ObjectId("5a3df85bcc6425291c54d2ad"),
"attendance_status" : true,
"create_at" : 1514279592137.0,
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("5a4212b49e710765c486d7c7"),
"student_id" : ObjectId("5a3df85bcc6425291c54d2ae"),
"attendance_status" : true,
"create_at" : 1514279592137.0,
"__v" : NumberInt(0)
}
{
"_id" : ObjectId("5a4212b49e710765c486d7c9"),
"student_id" : ObjectId("5a3df85bcc6425291c54d2b0"),
"attendance_status" : true,
"create_at" : 1514279592137.0,
"__v" : NumberInt(0)
}
我将创建时间存储为tramp。我想获得一个基于创建月份的数据来实现它吗?
我正在尝试使用以下查询查找数据。
Attendance.aggregate(
[{
$project: {
create_at: "$create_at",
student_id: "$student_id",
attendance_status: "$attendance_status",
month: {
$month: "$create_at"
}
}
},
{
$match: {
"month": req.body.month
}
},
])
我想基于创建月份的输出。如果我发送 req.body.month = 3 。我只想在3个月内获得数据。
答案 0 :(得分:4)
对于您要查询数据的任何月份,您可以使用new Date('YYYY-MM-DD').getTime()
获取开始时间戳和结束时间戳(e),并将数据库查询为
< / p>
Attendance.find(
{
create_at: {
$gte: s, //$gte corresponds to >=
$lte: e //$lte corresponds to <=
}
}
)
您可以找到有关此类mongo运算符的更多详细信息here
答案 1 :(得分:0)
这样做,我认为你应该看到MomentJS库。
例如:
var moment = require('moment');
var month = 3; // March
// Find all documents between 2017/03/01 and 2017/03/31
Attendance.find({
create_at: {
$gte: moment(`2017/${month}`, 'YYYY/MM').startOf('month').format('x'),
$lte: moment(`2017/${month}`, 'YYYY/MM').endOf('month').format('x')
}
});
希望它有所帮助。