MongoDB在查找特定文档?

时间:2018-12-17 12:29:47

标签: java mongodb querying

由于大多数教程已经过时,而且我的MongoDB版本(最新版本)没有BasicDBObject,因此我正在努力查找特定文档。

我正在使用BSON,这是我的尝试,

def fitfunc(x, a, b):
   return a*x + b

我完全知道这是错误的,但是我只是不知道如何在MongoDB上找到任何信息。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用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);
}

最后,您可以使用它们实施或自动装配(推荐)存储库类。只需实现一个命名findBy FiledName 的方法,其余方法将实现Spring MongoDb依赖性。另外,您可以将@Query批注用于自定义查询和过滤器。 您也可以参考Spring Documentation