使用 NativeQuery 的 MongoDB 聚合
Posted
技术标签:
【中文标题】使用 NativeQuery 的 MongoDB 聚合【英文标题】:MongoDB Aggregation using NativeQuery 【发布时间】:2016-01-20 14:24:52 【问题描述】:我正在尝试使用 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 unknown top level 运算符:$match"
MongoDB version3.0
hibernate-ogm-mongodb 4.2.0
【问题讨论】:
【参考方案1】:您可能想尝试“调用” 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);
【讨论】:
不适合我:当我尝试做 query.getSingleResult()... 我有一个 JsonParse 异常 ....以上是关于使用 NativeQuery 的 MongoDB 聚合的主要内容,如果未能解决你的问题,请参考以下文章
如何在spring数据仓库nativeQuery中使用oracle NVL函数
Doctrine2:使用 NativeQuery 和 ResultSetMapping 进行查询