我试图用java读取(mongo)用户数据库.在教程页面上,我看到了如何阅读整个集合.我可以这样做:
DBCursor cursor = col.find(); while (cursor.hasNext()) { System.out.println(cursor.next()); }
现在,如果我有一个用户集合:=姓名,年龄,密码(...)等等.现在我想找一个带密码的名字.例如,对于登录过程.假设我有两个字符串:String 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()的更多信息.