【问题标题】:How to write MongoTemplate Query and Criteria for a complex Document structure?如何为复杂的文档结构编写 MongoTemplate 查询和标准?
【发布时间】:2016-11-28 11:22:54
【问题描述】:

我是 MongoTemplate 的新手。我想定义一个 org.springframework.data.mongodb.core.query.Query 和 org.springframework.data.mongodb.core.query.Criteria 来从具有复杂文档结构的集合中获取数据。 这是文件

{
"_id" : {
    "SId" : "ANBS",
    "AssetId" : "ANBS_BS21",
    "ST" : NumberLong(1479114000) //StartDate
},
"ET" : NumberLong(1479117599) //EndDate,
"TS" : [ 
    NumberLong(1479114000), 
    NumberLong(1479114600), 
    NumberLong(1479115200), 
    NumberLong(1479115800), 
    NumberLong(1479116400), 
    NumberLong(1479117000)
],
"Tags" : {
    "ActivePower" : {            
        "Avg" : [ 
            16427.575, 
            16991.01, 
            16708.2016666667, 
            16488.335, 
            17230.1933333333, 
            15996.9783333333
        ]
    },
    "WindSpeed" : {            
        "Avg" : [ 
            64.4266666666667, 
            60.8583333333333, 
            65.275, 
            62.8766666666667, 
            63.2166666666667, 
            63.14
        ]
    }
}

我想获取给定 TimeRange(StartTime 和 EndTime)的所有文档,WHERE AssetId=? AND startTime >= ST AND endTime

谁能帮我解决这个问题?我不想要 mongo 查询,但我想要基于 MongoTemplate 的查询和条件。提前致谢。

【问题讨论】:

    标签: spring-data spring-data-mongodb mongotemplate


    【解决方案1】:

    我有一个解决方案,非常简单。发布此答案以便它可以帮助其他人。

    Query query = new Query(Criteria 
                .where("_id.SId").is(siteId)
                .and("_id.AssetId").is(assetId)
                .and("_id.ST").gte(startTimeRange)
                .and("ET").lte(endTimeRange));
    return mongoTemplate.find(query, MyCollection.class, "mycollection");
    

    【讨论】:

    • 有没有办法避免反射?是否有类似类型的查询,我可以在其中调用类似 ...where(MyObject.id).is(...)... 的东西?
    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 2012-11-30
    • 2012-08-03
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多