2016-01-20 100 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例外.... –