我有以下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月发布,所以不能这样。
只是一个蒙戈外壳查询也会清楚的事情了一下。 – user3960875 2014-10-20 11:37:48