Я изо всех сил пытаюсь найти конкретный документ, так как большинство руководств устарели, а моя версия MongoDB (последняя) не имеет BasicDBObject.
Я использую BSON, вот моя попытка,
public Document getPlayer(UUID uuid) {
Document toFind = new Document("id", uuid);
MongoCursor<Document> c = players.find(toFind).iterator();
while (c.hasNext()) {
if (toFind.equals(c)) {
return c;
}
}
return null;
}
Я полностью осознаю, что это неправильно, но я просто не знаю, как найти какую-либо информацию о MongoDB.




Посмотрите на http://mongodb.github.io/mongo-java-driver/3.9/javadoc/index.html?overview-summary.html
Для обычных запросов используйте служебный класс Filters.
players.find(Filters.eq("id", id))
Изменить после комментария: поскольку я нахожу зеленый крючок в этом ответе, я думаю, вы уже его решили, но тем не менее: убедитесь, что вы включили правильную версию драйвера в свой проект. В частности, для использования более современного интерфейса вам понадобится драйвер серии 3.x.
Текущая зависимость maven:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.9.1</version>
</dependency>
Полностью квалифицированный Filters на самом деле является com.mongodb.client.model.Filters.
Вы можете легко запросить mongoDb с помощью Spring Data MongoDB и maven следующим образом.
Сначала вам нужно добавить зависимость от maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
Поскольку он позволяет отображать документ mongoDB и java POJO, создайте класс модели.
import org.springframework.data.annotation.Id;
public class Player{
@Id
private String id;
private String playerName;
//getters and setters
}
Предполагая, что ваш документ mongoDb выглядит следующим образом
{
"_id": "123456789",
"playerName":"name1"
}
Затем создайте класс интерфейса как репозиторий, расширив класс MongoRepository
public interface PlayerRepository extends MongoRepository<Player, String> {
Player findById(String id);
Player findByPlayerName(String playerName);
@Query("{name:{$regex: ?0,$options:'i'}}")
List<Player> findPlayerByNameRegex(String name);
}
Наконец, вы можете использовать их для реализации или автоматического подключения (рекомендуется) класса репозитория. Просто реализуйте метод с именем findByFiledName, а остальные будут делать зависимость Spring MongoDb. Кроме того, вы можете использовать аннотацию @Query для пользовательских запросов и фильтров. Также вы можете сослаться на Документация Spring
У меня почему-то нет класса Filters? Я использую MongoDB 3.9.1