我有一个支付日期字段存储为字符串YYYY-MM-DD的mongo db(我不能更改这些是如何不幸的),我需要做一个日期范围搜索他们。猫鼬 - 按日期范围存储为字符串的搜索日期
我发现一个帖子提示是这样的:
coll.find({paymentDate: new RegExp("^(2016-02-18|2016-06-19)", "i")});
但我似乎无法得到这在所有的工作。
任何帮助表示赞赏,我在这里遇到了一个死胡同。
我有一个支付日期字段存储为字符串YYYY-MM-DD的mongo db(我不能更改这些是如何不幸的),我需要做一个日期范围搜索他们。猫鼬 - 按日期范围存储为字符串的搜索日期
我发现一个帖子提示是这样的:
coll.find({paymentDate: new RegExp("^(2016-02-18|2016-06-19)", "i")});
但我似乎无法得到这在所有的工作。
任何帮助表示赞赏,我在这里遇到了一个死胡同。
存储日期为YYYY-MM串-DD格式工作正常,在这种情况下,该字符串匹配排序日期排序,所以你可以这样做:
coll.find({paymentDate: {$gte: "2016-02-18", $lte: "2016-06-19"}});
有一个证明会好得多,无论如何你得到我的+1,考虑加入一些工作样品请 –
这似乎工作得很好。 – Mankind1023
您的第一个目标应该是更改模式并使用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'))
}
})
是要用作最小值和最大值不断使用日期? – nicovank
日期范围将更改并作为参数提供。这仅用于测试目的。 – Mankind1023