У меня есть следующие объекты MongoDB:
public class Player {
@Id
private String id;
private String username;
private int rating;
private boolean active;
}
public class Match {
@Id
private String id;
@DBRef
private Player playerOne;
@DBRef
private Player playerTwo;
}
Я пытаюсь получить все матчи игрока. Это означает, что, например, у меня есть текущий игрок, и список матчей должен быть возвращен для матчей, когда playerOne == текущий игрок или playerTwo == текущий игрок. Я использовал MongoRepository для этого:
public interface MatchRepository extends MongoRepository<Match, String> {
@Query(value = "{'$or': [{'playerOne.id': ?0}, {'playerTwo.id': ?0}]}")
List<Match> findByPlayerId(String playerId);
}
Когда я выполнил метод findByPlayerId, я получил следующую ошибку:
Caused by: com.mongodb.util.JSONParseException:
{'$or': [{'playerOne.id': "58ea191756a4302290fff9b1"}, {'playerTwo.id': "58ea191756a4302290fff9b1"0}]}
Я заметил странный символ 0
в конце сообщения об ошибке: "0}]}
Я также сделал обходной путь и передал тот же player.id
в качестве второго аргумента метода, и он отлично работает:
@Query(value = "{'$or': [{'playerOne.id': ?0}, {'playerTwo.id': ?1}]}")
List<Match> findByPlayerId(String playerId, String palyerId2);
У вас есть идеи, почему первый подход возвращает JSONParseException?