Mongoose - 按日期范围存储为字符串的搜索日期

时间:2016-10-23 03:40:12

标签: node.js mongodb mongoose

我有一个mongo数据库,其paymentDate字段存储为字符串YYYY-MM-DD(我不能更改这些字段的方式),我需要对它们进行日期范围搜索。

我发现了一个帖子暗示这样的话:

coll.find({paymentDate: new RegExp("^(2016-02-18|2016-06-19)", "i")});

但我似乎无法让它工作。

感谢任何帮助,我在这里走到了尽头。

2 个答案:

答案 0 :(得分:3)

将日期存储为YYYY-MM-DD格式的字符串在这种情况下正常工作,因为字符串排序与日期排序匹配,因此您可以这样做:

jdk1.8.0_60

答案 1 :(得分:0)

您的第一个目标应该是更改架构并使用Date而不是String。但是,如果它真的不可能并且您无法想到一个非常复杂的RegEx,您可以使用$where使用Javascript来实现它,但它的性能会慢得多:

db.test.find({
    $where: function () {
        var docDate = new Date(this.paymentDate);
        return (docDate >= new Date('2016-02-18') && docDate <= new Date('2016-02-19'))
    }
})