java - 在 mongodb 集合中找到一些值?

标签 java mongodb collections nosql

我正在尝试使用 java 读取 (mongo) 用户数据库。在教程页面上,我看到了如何阅读整个系列。我可以做这样的事情:

    DBCursor cursor = col.find();
    while (cursor.hasNext()) {
        System.out.println(cursor.next());
    }

现在,如果我有一个包含用户的集合:= 姓名、年龄、密码 (...) 等等。现在我想找到一个带密码的名字。例如登录过程。假设我有两个字符串:字符串 n 和 p。如果数据库中有 user.equals(n) 和 password.equals(p) 则登录用户。我该如何更改光标?我在 mongodb java 教程页面上看到了一些查询示例,但是我真的不明白...

有什么想法吗?谢谢

最佳答案

太棒了,你会爱上 Mongo 的。

在您发布的示例中,程序循环访问一组结果。在用户/密码问题中,您描述了您实际尝试做的是根据某些标准获取一个文档(而不是一组文档)。

在看起来像这样的 shell 上:

n = "login"
p = "password"

db.users.findOne({ user: n, password: p})

请注意,我使用的是 findOne 而不是 find,它返回一个文档而不是多个文档的光标。

现在,让我们看一下 java 驱动程序的示例:

BasicDBObject query = new BasicDBObject();

query.put("i", 71);
cur = coll.find(query);

while(cur.hasNext()) {
    System.out.println(cur.next());
}

BasicDBObject 创建查询对象,然后您将不同的条件放在一起形成您的查询。

所以代替 query.put("i", 71); 你会做这样的事情:

query.put("user", n)
query.put("password", p)

并且... 而不是 while 循环,只需使用 findOne 而不是 find,这样您就不必遍历 1 个对象的结果集(毫无意义)。

您可以阅读有关 findOne() 的更多信息 here .

关于java - 在 mongodb 集合中找到一些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8327676/

相关文章:

java - 在 java 中将 html 转换为 doc

java - 如何使用 Jackson 反序列化 JS 日期?

java - 无法使用 spring 数据连接到基于 MongoDB Atlas 的数据库

c# - Linq 用另一个集合的值更新一个集合?

java - 从 LinkedHashMap 中输入的键获取特定的下界值

java - 如何合并几个列表?

java - 不寻常的 "static"方法声明

java - stage.setIconify(true) 不适用于未装饰的舞台

javascript - 将 bcryptjs 与 Mongo 结合使用

json - 将对象从 MongoDB 游标流式传输到 Nodejs HTTP 响应