问题描述
更新:Spuggiehawk在他的回答中建议解决include
关键字问题,并提出一种替代_id
的{{1}}替代方法。但是,我仍然很难从服务类中调用此方法来编辑用户详细信息,我必须承认我掌握的知识有限,无法正确使用它。
projections
在服务类中
@Override
public User get(Object userId) {
FindIterable<User> userTbl = database.getCollection("User",User.class).find();
User user = new User();
for (User doc : userTbl) {
String oid = doc.getId().toHexString();
System.out.println("_id = " + oid);
return user;
}
return null;
}
解决方法
如果只需要对象ID,则不需要使用投影。您想要(循环)获取的语法是:
FindIterable<Document> userTbl = db.getCollection("User").find();
for (Document doc: userTbl2)
{
String id = doc.getObjectId("_id").toString();
System.out.println("_id = " + id);
}
使用该ID值执行所需的操作。
就使用include而言,如果确实找到了需要的情况,则需要静态导入。如果将鼠标悬停在关键字上,则Eclipse应该为您提供选择:
如果Eclipse没有显示出来,则可能需要在Eclipse配置中的窗口->首选项-> Java->编辑器-> Content Assist->收藏夹下添加引用:
重要的部分在代码的顶部,应该包括:
import static com.mongodb.client.model.Projections.include;
您也会发现它对过滤器也很有用,例如。
Bson filter = eq("email","email.com");
db.getCollection("User").find(filter);
最后,如果您只想在find()中获得第一条匹配记录,请使用:
Document = db.getCollection("User").find(filter).first();