0

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 不明な最上位演算子: $match」

MongoDB バージョン 3.0

hibernate-ogm-mongodb 4.2.0

4

1 に答える 1

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);
于 2016-01-20T14:41:26.837 に答える