0

ドキュメントのセットを持つ MongoDB からレコードをフェッチする必要があります。CRUD 操作を行うために Spring Boot と MongoRepository を使用しています。Query アノテーションを使用して Mongo クエリを渡していますが、Spring は私が作成したクエリを解析できません。私は MongoDB を初めて使用するので、これがばかげた質問である場合はご容赦ください。どんな助けでも大歓迎です、ありがとう。

これは私が使用しているクエリです:

@Query("{ '_id.AID' : ?0, '_id.STS' : {'$gte': NumberLong(1475778600)}, '_id.ETS':{'$lte': NumberLong(1475781659)}}")
List<AggregatedData> findByAidAndStartTimeAndEndTime(String aid);

私が得ている例外:

Caused by: com.mongodb.util.JSONParseException: 
{ '_id.AID' : "_param_0", '_id.STS' : {'$gte': NumberLong(1475778600)}, '_id.ETS':{'$lte': NumberLong(1475781659)}}
                                                ^
    at com.mongodb.util.JSONParser.read(JSON.java:301) ~[mongodb-driver-3.2.2.jar:na]
    at com.mongodb.util.JSONParser.parse(JSON.java:180) ~[mongodb-driver-3.2.2.jar:na]

Mongo レコード構造:

{
    "_id" : {
        "SiteId" : "JATH",
        "AID" : "JA04",
        "STS" : NumberLong(1475778600),
        "ETS" : NumberLong(1475781659)
    },
    "TS" : [ 
        1475820600, 
        1475779200, 
        1475779800, 
        1475780400, 
        1475781000, 
        1475781600
    ],
    "Tags" : {
        "ActivePower" : {
            "Max" : [ 
                1181.5, 
                1181.5, 
                1181.5, 
                1181.5, 
                1181.5, 
                1181.5
            ],
            "Min" : [ 
                73.5, 
                73.5, 
                73.5, 
                73.5, 
                73.5, 
                73.5
            ],
            "Sum" : [ 
                224430, 
                224430, 
                224430, 
                224430, 
                224430, 
                224430
            ],
            "Avg" : [ 
                374.05, 
                374.05, 
                374.05, 
                374.05, 
                374.05, 
                374.05
            ],
            "Count" : [ 
                600, 
                600, 
                600, 
                600, 
                600, 
                600
            ],
            "Std" : [ 
                175.242871942532, 
                175.242871942532, 
                175.242871942532, 
                175.242871942532, 
                175.242871942532, 
                175.242871942532
            ]
        }        
    }
}
4

2 に答える 2

1

Answer!!:

Hi, I got it solved.... This is how the query looks:

@Query("{ '_id.AID' : ?0, $and:[{'_id.STS' : {'$gte': ?1}}, {'_id.ETS':{'$lte': ?2}}]}")    
List<AggregatedData> findByAidAndStartTimeAndEndTime(String aid, Long startTimeRange, Long endTimeRange);
于 2016-10-25T07:38:42.000 に答える
1

これを試して:

@Query(value = "{ '_id.AID' : ?0 }", fields = {"_id.STS' : {'$gte': NumberLong(1475778600)}, '_id.ETS':{'$lte': NumberLong(1475781659)}}")
于 2016-10-18T19:04:47.270 に答える