我有一個支付日期字段存儲爲字符串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