您好,我无法将以下mongoDB查询转换为spring查询,我尝试了多种方法,但未得到结果。
db.getCollection('FarmerCropDataLog').aggregate([
{
"$match" :
{
"cropData.crop" : "RICE",
"creationTime" :
{
$lt : 1551447981473.0
}
}
},
{
"$group" :
{
_id : null,
"average" :{
$avg : "$cropData.cropPrice"
},
"max" :{
$max : "$cropData.cropPrice"
},
"min":{
$min : "$cropData.cropPrice"
}
}
}
])
我已经写了以下代码,但是无法考虑下一步。
Query query = new Query();
query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CROP_LOG).elemMatch(Criteria.where(CropData.Constants.CROP).is(getComparisonSheet.getCrop())));
query.addCriteria(Criteria.where(FarmerCropDataLog.Constants.CREATION_TIME).gt(Year * DIFF));
答案 0 :(得分:2)
您是否曾经考虑过使用MongoDB指南针?它将使您的工作非常简单。
MongoDB compass
连接到您的实例save pipeline
选项旁边的3个点(...)export to language
并选择Java 这是Java查询
Arrays.asList(match(and(eq("cropData.crop", "RICE"), lt("creationTime", 1551447981473.0d))), group(new BsonNull(), avg("average", "$cropData.cropPrice"), max("max", "$cropData.cropPrice"), min("min", "$cropData.cropPrice")))
答案 1 :(得分:0)
如果您使用过JpaRepository,则很容易关联,就像创建JpaRepository一样,您可以创建一个接口并扩展MongoRepository,并且它提供了一些简单的方法,并且您不需要实现它。
您可以使用(例如,考虑具有姓氏和名字的人)
基于MongoDB JSON的查询方法和字段限制
public interface PersonRepository extends MongoRepository<Person, String>
@Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}")
List<Person> findByThePersonsFirstname(String firstname);
}
地理空间存储库查询
public interface PersonRepository extends MongoRepository<Person, String>
// { 'location' : { '$near' : [point.x, point.y], '$maxDistance' : distance}}
List<Person> findByLocationNear(Point location, Distance distance);
}