【问题标题】:MongoDB finding a speciffic document?MongoDB 查找特定文档?
【发布时间】:2019-05-17 19:47:03
【问题描述】:

我很难找到一个特定的文档,因为大多数教程都已过时,而且我的 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 上找到任何信息。

【问题讨论】:

    标签: java mongodb querying


    【解决方案1】:

    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
    【解决方案2】:

    您可以使用 Spring Data MongoDB 和 maven 轻松查询 mongoDb,如下所示。

    首先你需要添加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 Documentation

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2013-09-10
      相关资源
      最近更新 更多