2016-11-28 6 views
0

私はMongoTemplateを初めて使用しています。 org.springframework.data.mongodb.core.query.Queryとorg.springframework.data.mongodb.core.query.Criteriaを定義して、複雑な文書構造を持つコレクションからデータを取得したいとします。 これは複雑なドキュメント構造のMongoTemplateクエリとクライテリアを書くには?

{ 
"_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 
     ] 
    } 
} 

が、私は与えられた時間範囲(のStartTimeと終了時間)、AssetId =のためのすべての文書を取得したい文書がありますか? AND startTime> = STおよびendTime < = ETです。

誰でもこの問題を解決できますか?私はmongoクエリが欲しいとは思わないが、私はMongoTemplateベースのクエリと条件が必要だ。前もって感謝します。

+0

これまでに試したことがあれば追加してください – Veeram

答えて

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"); 
関連する問題