有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回集合的类型。使用java在mongodb中查找

我试图使用java实现一个简单的登录函数,其中用户通过文本字段输入用户名和密码,然后使用maven依赖项根据mongodb集合中的一组文档检查这些凭据。 已建立与数据库的连接,并添加了相关导入

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;

String user  = txtUser.getText();
String pass = txtPass.getText();

MongoDatabase db = DbConnection.getDbConnection();
MongoCollection collection = db.getCollection("Admin");
FindIterable<Document> findLogin = collection.find(and(eq("username", user),eq("password",pass)));

if(findLogin == null){
     System.out.println("Failed");
}else{
      System.out.println("Successful");
}

这里的问题是,即使输入了错误的凭据,也会显示successful。这是我第一次使用mongodb,所以我不能完全确定可以在mongodb上运行哪些查询。集合中包含什么类型的值。找到回报。我可以采取哪些可能的方法来克服这个问题


共 (1) 个答案

  1. # 1 楼答案

    MongoCollection的find()方法返回的FindIterable将不会是null。为了确定查询是否匹配了任何文档,您需要检查FindIterable

    在您的例子中,first()方法是最合适的。这样,您就可以对单个文档执行空检查。总而言之,它可能是这样的:

    Document loginDoc = collection.find(and(eq("username", user),eq("password",pass))).first();
    
    if (loginDoc == null) {
         System.out.println("Failed");
    } else {
         System.out.println("Successful");
    }