使用Java 8中的MongoDB MongoClient检索一个文档

时间:2017-10-24 18:38:42

标签: java mongodb

我是Java和MongoDB的新手,尽管有几个小时搞乱这个,但我无法轻松地使用Java Mongodb-Driver客户端3.2.2检索一个简单的文档。

连接很好,我可以查看收藏夹等。

我的问题行如下:

Document profile = collection.find(new Document("_id", 10));

然而,当我编译时,我收到以下错误:

Java:incompatible types: com.mongodb.client.Finditerable<org.bson.Document> cannot be converted to org.bson.Document

现在我可以解决这个问题,因为Stack Overflow上的一些谷歌搜索产生了以下代码,但这对我来说似乎有点不必要了:

Document profile = collection.find(new Document("_id", 10)).projection(Projections.fields(Projections.include("firstName")))).first();

在我尝试将类型更改为BasicDBObject但没有运气的时候,我感到难过。

2 个答案:

答案 0 :(得分:2)

编译器准确地告诉您问题所在 - 尝试以下方法:

CheckNetIsolation

请注意,Document profile = collection .find(new Document("_id", 10)) .first(); 会返回FindIterable,因此您需要致电find以获取first()

我还建议您阅读this教程 - 您将学到很多东西。

答案 1 :(得分:2)

您不需要library(dplyr) library(purrr) library(tidyr) library(lubridate) tibble(aw) %>% mutate(aw_sunday = aw + lubridate::days(4)) %>% #Find the first Sunday after each Ash Wednesday mutate(extra_days = map(aw_sunday, function(x) x + lubridate::days(1:40))) %>% #Find all series of 40 days after each sunday unnest %>% mutate(week_day = lubridate::wday(extra_days, label = TRUE)) %>% #Find all the day names filter(week_day == 'Fri') %>% # Filter out the fridays pull(extra_days)

projection

...交替

Document profile = collection.find(new Document("_id", 10)).first();

您发现import static com.mongodb.client.model.Filters.eq; // other code removed Document profile = collection.find(eq("_id", 10)).first(); 会直接返回FindIterable,而不是一个或多个find个对象。这起初很烦人,但非常强大和有用。

要在多个条件下过滤我的工作:

Document