Java 如何在MongoDB的方法中传递变量

Java 如何在MongoDB的方法中传递变量,java,spring,mongodb,Java,Spring,Mongodb,我需要在方法内部向MongoDB查询传递一个变量,但我得到了以下错误: org.bson.json.JsonParseException: JSON reader expected a string but found '?0'. 查询: @Query(value = "{ $and: [ {'created_at': {$lt: ISODate(?0)} } ] }") Stream<MyObject> findByCreatedAt(Instant crea

我需要在方法内部向MongoDB查询传递一个变量,但我得到了以下错误:

org.bson.json.JsonParseException: JSON reader expected a string but found '?0'.
查询

@Query(value = "{ $and: [ {'created_at': {$lt: ISODate(?0)} } ] }")
Stream<MyObject> findByCreatedAt(Instant createdAtTimeInterval);
Instant nowTime = Instant.now();
myObjectRepo.findByCreatedAt( nowTime.minus( Duration.ofHours(2) ) );
请帮助我如何处理当前情况的最佳方法。

@Aggregation(pipeline={
@Aggregation(pipeline = {
            "{ '$addFields': { 'dateString': { $dateToString: { format: '%Y-%m-%dT%H:%M:%S.%LZ', date: '$created'} } }  }",
            "{ '$match': { dateString: {$gte: ?0, $lt: ?1} , 'channel.account': ?2 }}" })
    List<XXX> findByCreatedBetweenByChannelAcount(String dateFrom,String dateTo,String originNumber);
“{'$addFields':{'dateString':{$dateToString:{格式:'%Y-%m-%dT%H:%m:%S.%LZ',日期:'$created'}}”, “{$match':{dateString:{$gte:?0,$lt:?1},'channel.account':?2}}” 列出findByCreatedBetweenByChannelAcount(字符串dateFrom、字符串dateTo、字符串originNumber);
虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。