2011-07-06 92 views
0

我有optionnal的startDate和結束日期屬性MongoDB的日期範圍查詢(用optionnal日期)

對象

我想查詢我的對象,如:

的startDate等於null或大於今天 AND endDate等於 無效或小於今天。

如果我只有一個單一的日期,我當然會用「或」運算符

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

然後我可以作出這樣

{$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()}} 
     ]} 

真正的問題在這裏複雜的要求是因爲我已經使用$或條件來限制其他限制,這使得它更加複雜。

你會有什麼選擇來解決這個看起來很簡單的問題?

回答

1

在應用程序代碼中實現一些邏輯,以便根據參數約束指定正確的查詢,而不是直接在MongoDB查詢層上解決此問題。在這種情況下,MongoDB的查詢語言部分太弱。

+0

Thx爲您的答案。如果我沒有其他線索,我會在幾天內接受它,似乎你是對的。 –