Return 指定字段和 _id 字段仅在 java
Return the Specified Fields and the _id Field Only in java
更新:Spuggiehawk 在他的回答中建议修复 include
关键字问题,并建议另一种获取 _id
而不是 projections
的方法。但是,我仍然无法从我的服务 class 调用此方法,该方法编辑用户详细信息,我必须承认我的知识有限,无法做到正确。
@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;
}
服务中class
public void editUser() {
String userId = request.getParameter("id");
User user = userDAO.get(userId);
System.out.println(user.getFullName());
}
如果您只需要 object 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 没有显示,您可能需要在 Window -> 首选项 -> Java -> 编辑器 -> 内容辅助 -> 收藏夹下的 Eclipse 配置中添加引用:
重要的部分在代码的顶部,它应该包括:
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();
更新:Spuggiehawk 在他的回答中建议修复 include
关键字问题,并建议另一种获取 _id
而不是 projections
的方法。但是,我仍然无法从我的服务 class 调用此方法,该方法编辑用户详细信息,我必须承认我的知识有限,无法做到正确。
@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;
}
服务中class
public void editUser() {
String userId = request.getParameter("id");
User user = userDAO.get(userId);
System.out.println(user.getFullName());
}
如果您只需要 object 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 没有显示,您可能需要在 Window -> 首选项 -> Java -> 编辑器 -> 内容辅助 -> 收藏夹下的 Eclipse 配置中添加引用:
重要的部分在代码的顶部,它应该包括:
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();