MongoDB найти конкретный документ? - PullRequest
0 голосов
/ 17 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

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

Наконец, вы можете использовать их Реализация или AutoWiring (рекомендуется) класса репозитория.Просто реализуйте метод с именем findBy FiledName , а остальные будут выполнять зависимость Spring MongoDb.Кроме того, вы можете использовать аннотацию @Query для пользовательских запросов и фильтров.Также вы можете обратиться к Spring Documentation

0 голосов
/ 17 декабря 2018

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

...