MongoDB находит конкретный документ?

Я изо всех сил пытаюсь найти конкретный документ, так как большинство руководств устарели, а моя версия 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.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
155
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Посмотрите на 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.

У меня почему-то нет класса Filters? Я использую MongoDB 3.9.1

Archie 17.12.2018 22:50

Вы можете легко запросить 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

Другие вопросы по теме