在 mongodb 集合中查找一些值?

时间:2023-04-05
本文介绍了在 mongodb 集合中查找一些值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

Im trying to read a (mongo)userdatabase with java. On the tutorial page I saw how to read the whole collection. I can do something like that:

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

Now if I have a collection with users := name, age, password (...) and whatever. Now I would like to find a name with a password. For example for a login process. Lets say I have two strings: String n and p. If there is a user.equals(n) and a password.equals(p) in the database then login user. How do I have to change my cursor? I saw some query examples on the mongodb java tutorial page, but duh I really dont get it...

Any ideas? Thank you

解决方案

Awesome, you'll love Mongo.

In the example you posted, the program iterates through a set of results. In the user/password problem you describe what you are actually trying to do is get one document (not a set of documents) based on some criteria.

On the shell that would look like this:

n = "login"
p = "password"

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

Notice I'm using findOne instead of find which returns a document instead of a cursor to many documents.

Now, lets take a look at the java driver's example:

BasicDBObject query = new BasicDBObject();

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

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

The BasicDBObject creates the query object and then you put different criteria which together form your query.

So instead of query.put("i", 71); you would do something like:

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

and... instead of the while loop just use findOne instead of find so you don't have to iterate over the result set of 1 object (pointless).

You can read more about findOne() here.

这篇关于在 mongodb 集合中查找一些值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:在 mongodb 中读取数组? 下一篇:如何返回 N1qlQueryResult 作为 Couchbase 数据库的 REST API 的响应?

相关文章