2013-05-02 292 views
0

我想找到它們「開始日期」 &「結束日期」之間的記錄。我得到這個記錄的日期,如「2013年5月22日」,「2013年5月20日」,「2013年5月10日」,「2013年5月5日」等蒙戈DB日期範圍查詢(日期範圍之間)

我的收藏領域是作爲如下:

array (
    '_id' => new MongoId("518221f16541b9980d000002"), 
    'userId' => '2d40981c83a37e758ced05dc325e40fa', 
    'kpiId' => 'f516ed1c59e6b310c47cdfc06abb17aa', 
    'dateOpt' => 'customize', 
    'startDate' => '2013-05-02', 
    'endDate' => '2013-05-22', 
    'personalTarget' => '', 
    'assignedTarget' => '100000.00', 
    'singleTargetAmt' => 6666.6666666667, 
    'createdOn' => '2013-05-02 13:51:05', 
    'updatedOn' => '2013-05-02 13:51:05', 
    'distributionMethod' => 'manual', 
) 

和我的查詢是:

array(
    "kpiId" => 'f516ed1c59e6b310c47cdfc06abb17aa', 
     "userId" => '2d40981c83a37e758ced05dc325e40fa', 
     "startDate" => array 
      (
       '$gte' => '2013-05-03' 
      ), 
    "endDate" => array 
      (
       '$lte' => '2013-05-03' 
      )  
    ) 

它給任何記錄。我的查詢是錯誤的?

+1

是在文檔領域真正的字符串,而不是日期對象? – Sammaye 2013-05-02 13:05:11

+0

是的,他們是字符串 – 2013-05-02 13:05:48

+0

我注意到,該文件不會被發現,你確定你有任何文件在'03-05-2013'?如果你嘗試了'2013-05-02',而不是你會得到結果? – Sammaye 2013-05-02 13:19:38

回答

0

嘗試這樣的事情

Query query = new Query(Criteria.elemMatch(
Criteria.where("startDate").lte(date) 
.and("endDate").gte(date) 
); 
+0

我有兩個不同的字段和一個查詢日期值。創建日期可能不同,它是「2013年4月25日」,如果我在4月25日創建此記錄,所以它不起作用。 – 2013-05-02 13:12:19

+0

他對PHP有正確的語法,再加上那裏不是PHP語法 – Sammaye 2013-05-02 13:18:48

+0

你的編輯是Java語法':/' – Sammaye 2013-05-02 13:21:40