2016-01-20 95 views
0

我正在尝试使用NativeQuery在mongoDB中进行简单的聚合。可能吗?我做了很多测试,但我找不到解决方案。 查询是:使用NativeQuery的MongoDB聚合

String query = "{ $match : 
         { dateTimestamp : 
           { $gt : 1452380400000 , $lt :1453222518000}} 
         } , 
        { $group : 
        { _id : {hour: 
           { $hour : '$date'} 
          } , 
          'myData' : { $push : '$dataUsed'} 
         } 
        }, 
        { $sort : { 'dataUsed' : -1}}"; 


    Object resultObject = em.createNativeQuery(query,MyClass.class).getSingleResult(); 

的错误是: “无法规范化查询:未知的badValue顶级 操作:$匹配”

MongoDB的3.0版

休眠-ogm-mongodb 4.2.0

回答

0

您可能想尝试MongoDB的“调用”aggregate() API:

String nativeQuery = "db.collection.aggregate([" 
    + "{ $match: { dateTimestamp: { $gt: 1452380400000, $lt: 1453222518000 } } }," // WHERE 
    + "{ $group: { _id: { hour: { $hour : '$date'} }, myData: { $push: '$dataUsed' } } }," // GROUP BY 
    + "{ $sort : { '_id.hour': -1 } }]"; // ORDER BY 

Query query = em.createNativeQuery(nativeQuery, MyClass.class); 
+0

不适合我:当我尝试做query.getSingleResult()...我有一个JsonParse例外.... –