在字符串日期MongoDB之间获取数据

时间:2018-08-12 01:52:42

标签: mongodb

我在开始日期之间如何获取数据有一个问题,因为它只是字符串和这样的文档架构

"_id" : ObjectId("5ab92bdd6fbcd28fb0c68ff6"),
"username" : "jumbreng",
"startdate" : "26-03-2018",
"enddate" : "11-08-2018",
"status" : 1

我一直在尝试创建这样的聚合

    db.presensi.aggregate( [ {
   $project: {   
      "username": "$username",
      "startdate": {
         $dateFromString: {
            dateString: '$startdate',
         }
      },
      "enddate" :{
         $dateFromString: {
            dateString: '$enddate',
         }
   }
   }
} ] )

但是我不知道如何使它具有像find($ lte和$ gte)这样的范围 我应该将该集合更新为我的集合吗?然后我可以创建语句find($ lte和$ gte)吗?如何对我的收藏进行汇总?

1 个答案:

答案 0 :(得分:3)

$dateFromString聚合运算符可以为您提供帮助。

尝试:

db.user.aggregate(

// Pipeline
[
    // Stage 1
    {
        $project: {
            _id: true,
            startdate: true,
            enddate: true,
            status: true,
            username: "$username",
            isBetween: {
                $and: [{
                    $lt: [{
                        $dateFromString: {
                            dateString: '$startdate',
                        }
                    }, {
                        $dateFromString: {
                            dateString: '27-03-2018',
                        }
                    }]
                }, {
                    $gt: [{
                        $dateFromString: {
                            dateString: '$startdate',
                        }
                    }, {
                        $dateFromString: {
                            dateString: '25-03-2018',
                        }
                    }]
                }]
            }
        }
    },

    // Stage 2
    {
        $match: {
            "isBetween": true
        }
    },
], {
    cursor: {
        batchSize: 50
    }
});