MongoDB 查找特定文档?
MongoDB finding a speciffic document?
我正在努力寻找特定文档,因为大多数教程都已过时,而且我的 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
实用程序 class
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
.
您可以使用 Spring 数据 MongoDB 和 maven 轻松查询 mongoDb,如下所示。
首先需要添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
因为它允许映射 mongoDB 文档和一个 java POJO,所以创建一个模型 class.
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 class
创建一个接口 class 作为存储库
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);
}
您终于可以使用它们实现或自动装配(推荐)存储库 class。只需实现一个名为 findByFiledName 的方法,剩下的将做 Spring MongoDb 依赖。此外,您可以将 @Query 注释用于自定义查询和过滤器。
您也可以参考 Spring Documentation
我正在努力寻找特定文档,因为大多数教程都已过时,而且我的 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
实用程序 class
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
.
您可以使用 Spring 数据 MongoDB 和 maven 轻松查询 mongoDb,如下所示。
首先需要添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
因为它允许映射 mongoDB 文档和一个 java POJO,所以创建一个模型 class.
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 class
创建一个接口 class 作为存储库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);
}
您终于可以使用它们实现或自动装配(推荐)存储库 class。只需实现一个名为 findByFiledName 的方法,剩下的将做 Spring MongoDb 依赖。此外,您可以将 @Query 注释用于自定义查询和过滤器。 您也可以参考 Spring Documentation