2016-10-23 2 views
0

私は支払予定日フィールドが文字列YYYY-MM-DDとして保存されているmongo dbを持っています(これらは残念ながら変更できません)。それらを検索する。Mongoose - 日付範囲で文字列として格納されている検索

私はこのような何かを示唆している記事が見つかりました:

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

をしかし、私はそれがすべてで仕事を得るように見えることはできません。

何か助けていただければ幸いです。

+0

最小および最大定数として使用する日付はありますか? – nicovank

+0

日付範囲が変更され、パラメータとして提供されます。これは、テスト目的のためのものです。 – Mankind1023

答えて

2

この場合、文字列の順序が日付の順序と一致するので、-DD形式はうまくいきます。

coll.find({paymentDate: {$gte: "2016-02-18", $lte: "2016-06-19"}}); 
+0

の証明があればもっと良いでしょう。とにかく私の+1を得て、いくつかの作業サンプルを追加してください。 –

+0

これはうまくいくようです。 – Mankind1023

0

最初の目的はスキーマを変更し、Stringの代わりにDateを使用する必要があります。しかし、それは本当に不可能ですし、あなたが本当に複雑なRegExを考えることができない場合、あなたは$whereを使用してJavascriptでそれを行うことができますが、それはパフォーマンスが非常に遅くなりますです:YYYY-MM内の文字列として日付を保存する

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