我已经在ISO date formate中存储了mongodb。我想获得所有与今天日期和月份相同的日期的文件。有没有办法在mongo中这样做?
{
"_id" : ObjectId("nkada23e3dmw28392fh237"),
"fullname" : "alan",
"dateOfBirth" : ISODate("1980-09-12T00:00:00.000Z")},
{
"_id" : ObjectId("29hhda23e3dmw2ff392fh23r"),
"fullname" : "alan1",
"dateOfBirth" : ISODate("1993-10-11T00:00:00.000Z")},
}
答案 0 :(得分:4)
是的,有一种方法可以运行这个简单的aggregation
查询,例如,
db.collectionName.aggregate(
[
{
$project: {
month: { $month: "$dateOfBirth" },
day: { $dayOfMonth: "$dateOfBirth" }
}
},
{
$match: {
month: new Date().getMonth() + 1, //because January starts with 0
day: new Date().getDate()
}
}
], function (err, data) {
});
在$projetct
中,您可以传递要从文档中选择的其他属性。如果您还想选择"fullname"
,那么您的$project
如下所示
$project: {
month: { $month: "$dateOfBirth" },
day: { $dayOfMonth: "$dateOfBirth" },
fullname: 1 // it can be true or 1
}
答案 1 :(得分:1)
使用Date Aggregation Operators仅投影日期和月份,然后应用过滤器。
day = 21
month = 11
coll.aggregate([{'$project':{"month": { "$month": "$dateOfBirth" },
"day": { "$dayOfMonth": "$dateOfBirth" }}},
{"$match":{"day": day, "month": month}}])