根据不包括年份的月份和日期获取数据

时间:2017-11-21 04:39:40

标签: mongodb mongodb-query

我已经在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")},
   }

2 个答案:

答案 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}}])