2014-10-20 57 views
1

我有以下mysql語句,但我想用它與java的spring mongodb驅動程序。如何轉換它?看過聚合但不知道如何。在MongoDB中計數語句

SELECT SUM(CASE WHEN CreatedTime BETWEEN ('7:00:00' AND '7:14:59') THEN 1 ELSE 0) as firstCount, 
     SUM(CASE WHEN CreatedTime BETWEEN ('7:15:00' AND '7:29:59') THEN 1 ELSE 0) as secondCount, 
FROM MyTable 
Where username='Jim' 

蒙戈文件:使用彈性數據將其轉換成Java的

{ _id: ObjectId("5asd3ea3402984ca53"), username: "Jim", comment: "hi", CreatedTime: ISODate("2014-10-15T16:39:26.870Z") } 

UPDATE

當調用getTemplate().executeCommand(match);我得到這個:

{ "serverUsed" : "xxxxxxx" , "ok" : 0.0 , "errmsg" : "no such cmd: $match" , "bad cmd" : { 
"$match" : { "username" : "Jim"} , 
"$group" : { 
    "firstCount" : { 
     "$sum" : { 
      "$cond" : { 
       "if" : { 
        "$and" : [ [ { "$gte" : { "$CreatedTime" : { "$date" : "2014-09-20T16:02:10.924Z"}}} , 1 , 0] , 
          [ { "$lte" : { "$CreatedTime" : { "$date": "2014-10-20T15:48:19.744Z"}}} , 1 , 0]]} , 
       "then" : { "$ifTrue" : 1} , 
       "else" : { "$else" : 0} 
      } 
     } 
    } 
}}} 

代碼,我用來獲取JSON的是here(它相當長).Query看起來與@Wizard建議的一樣。

$ match有什麼麻煩?我在Stackoverflow的某個地方讀到了舊版本的mongodb不支持$匹配,但我有2014年8月發佈,所以不能這樣。

+0

只是一個蒙戈外殼查詢也會清楚的事情了一下。 – user3960875 2014-10-20 11:37:48

回答

2

像這樣:

db.MyTable.aggregate([{ 
    $match : { 
     username : 'Jim' 
    } 
}, { 
    $group : { 
     _id : 0, 
     firstCount : { 
      $sum : { 
       $cond : { 
        "if" : { 
         $and : [{ 
          $gte : [ "$CreateTime", '7:00:00' ] 
         }, { 
          $lte : [ "$CreateTime", '7:14:59' ] 
         }] 
        }, 
        "then" : 1, 
        "else" : 0 
       } 
      } 
     }, 
     secondCount : { 
      $sum : { 
       $cond : { 
        "if" : { 
         $and : [{ 
          $gte : [ "$CreateTime", '7:15:00' ] 
         }, { 
          $lte : [ "$CreateTime", '7:29:59' ] 
         }] 
        }, 
        "then" : 1, 
        "else" : 0 
       } 
      } 
     }, 
    } 
}]); 
+0

我認爲這是比我更好的方式來完成這項工作;)。很好的答案(投了) – Disposer 2014-10-20 12:22:41

+0

@Disposer,謝謝。 :) – Wizard 2014-10-20 12:27:12

+0

感謝它幫助我走了:) – user3960875 2014-10-20 16:10:25