使用MongoDB在java中实现返回语句的FindById时出现问题

使用MongoDB在java中实现返回语句的FindById时出现问题,java,mongodb-query,return,crud,Java,Mongodb Query,Return,Crud,更新:return语句仍无法按预期在DAO中按id显示单个用户详细信息。我只能使用for循环遍历\u id以匹配用户id,但当我单击编辑按钮时,用户数量将在控制台中显示所有以前的用户id 另一个问题是,当我在服务类中调用此方法时,输出为null。仍然渴望解决办法来帮助我克服它 @Override public User get(Object userId) { User user = new User(); FindIterable<Document>

更新:return语句仍无法按预期在
DAO
中按id显示单个用户详细信息。我只能使用for循环遍历
\u id
以匹配
用户id
,但当我单击
编辑
按钮时,用户数量将在控制台中显示所有以前的用户id

另一个问题是,当我在服务类中调用此方法时,输出为
null
。仍然渴望解决办法来帮助我克服它

@Override
public User get(Object userId) {

    User user = new User();
    
    FindIterable<Document> userTbl = database.getCollection("User").find();
for (Document doc : userTbl) {          

    String id = doc.getObjectId("_id").toString();
System.out.println("_id = " + id);

        if (id.equals(userId)) {
            return user;
        }
    }

    return null;
}

在得到@Smutje的提示并重新思考之后,我终于在学习MongoDB的第二周找到了答案。在我的级别,我需要迭代用户文档,然后找到id并返回它

@Override
public User get(Object userId) {


FindIterable<User> userTbl = database.getCollection("User", User.class).find();
for (User doc : userTbl) {

    String id = doc.getId().toHexString();
    System.out.println("_id = " + id);

    if (id.equals(userId)) {
        return doc;
    }
}
return null;
@覆盖
公共用户获取(对象用户ID){
FindTerrable userTbl=database.getCollection(“User”,User.class).find();
for(用户文档:userTbl){
String id=doc.getId().toHexString();
System.out.println(“\u id=“+id”);
if(id.equals(userId)){
退货单;
}
}
返回null;

}

该代码有太多错误,我甚至不知道从哪里开始。不应重写
userId
(参数!),并且在返回新的
User
对象而不填充时,该用户的名称为空也就不足为奇了。我建议您了解如何使用MongoDB过滤而不是您自己的过滤来过滤集合,然后如何将过滤结果映射到
用户
对象中,该对象返回您找到的文档而不是空对象。@Smutje抱歉,您有关于它的有用来源(MongoDB过滤)?我不理解Java的文档。。。“对于find()方法,您也可以调用该方法,而无需传递筛选器对象来匹配集合中的所有文档。”这是否回答了您的问题?DAO返回的用户全名为null,因为DAO返回的是您在方法体中实例化的空实例,而不是由匹配ID的
文档组成的
用户。
@Override
public User get(Object userId) {


FindIterable<User> userTbl = database.getCollection("User", User.class).find();
for (User doc : userTbl) {

    String id = doc.getId().toHexString();
    System.out.println("_id = " + id);

    if (id.equals(userId)) {
        return doc;
    }
}
return null;