我正在尝试使用 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/