2011-07-06 68 views
0

私はoptionnalたstartDateとendDateにプロパティを持つMongoDBの日付範囲クエリ

をオブジェクトを持っているように私は私のオブジェクトを照会したいと思います:たstartDateはnullまたは今日より 大きい等しく、

endDateは と等しいか、今日よりも小さいです。

私はただ1つの日付を持っていた場合、私はもちろん、私はその後、ここに

{$or : [{startDate : null, endDate : null}, 
     {startDate : {$gte : new Date()}, endDate : null}, 
     {startDate : {$gte : new Date()}, endDate : {$lte : new Date()}}, 
     {startDate : null, endDate : {$lte : new Date()}} 
     ]} 

本当の問題のような複雑な要求を作ることができ

{$or : [{startDate : null}, {startDate : {$gte : new Date()}}]} 

「または」演算子を使用します他の制限のためにすでに$または条件を使用しているため、さらに複雑になっています。

これは明らかに非常に単純な問題を解決するあなたの選択肢は何ですか?

答えて

1

MongoDBクエリレイヤーでこの問題を直接解決するのではなく、パラメータ制約に基づいて適切なクエリを指定するために、アプリケーションコード内にロジックを実装します。この場合、MongoDBのクエリ言語は部分的に弱すぎます。

+0

Thxです。私は他の手がかりがない場合は、数日後にそれを受け入れるよ、あなたが正しいように思える。 –

0

私はあなたが必要と思う:https://jira.mongodb.org/browse/SERVER-1089

+0

はい、私は必要です(ここにはすでに言及されています^^)が、私はそれを待っていて、解決策があるかどうか疑問に思いました。あなたの答えは –