私はモンゴ・リポジトリのための私自身のクエリを作る使用しようとしています:MongoRepository JSON日付クエリ(春)
@Repository
public interface LogEntryRepository extends MongoRepository<LogEntry,String> {
@Query("{'created_at' : {{ $gte: ISODate(?0)},{$lt: ISODate(?1)}}, " +
"$or: [{'site': {$regex: ?2}}, {'login': {$regex: ?2}}, {'ip': {$regex: ?2}} ]" +
"}")
public Page<LogEntry> findByDateTimeBetweenAndCriteria(String isoStartDate, String isoEndDate, String searchTerm, Pageable page);
}
私は何を達成したいことは、キーワードと日付入りのログかかわらず検索されます。上記のパースエラー文句:
Caused by: com.mongodb.util.JSONParseException:
{'created_at' : { $gte: ISODate("_param_0"), $lt: ISODate("_param_1")}, $or: [{'site': {$regex: "_param_2"}}, {'login': {$regex: "_param_2"}}, {'ip': {$regex: "_param_2"}} ]}
^
私は単に?0
とISODate(?0)
を交換した場合、それはPage 1 of 0 containing UNKNOWN instances
ストリングスisoStartDate
& isoEndDate
がjava.util.Date
から生成し、どうすればよい。この2017-06-27T00:00:00.000Z
のように見えている生成私はそこに私の日付を取得しますか?
でも、@ 0 = 2017-06-28T00:00:00.000Z(String)の '@Query(" {created_at ':{$ date:?0}} ")'というJSON解析エラーが発生します。何かご意見は? – OrangePot
@OrangePot '' $ date "' – Kdawg
を二重引用符で囲む必要があります。 '$ date'の周りにエスケープ文字を置くかどうかは違います。この小さな記号'^'は、エラーメッセージが表示されます – OrangePot