如何使用Java从MongoDB中将数据保存到字符串中?

时间:2016-10-14 17:46:03

标签: java mongodb login

我在Mongo DB的数据库中有这样的文档。

{
    "_id" : ObjectId("5800d904a3e7535f0d2d673a"),
    "username" : "sai",
    "password" : "sai123"
}
{
    "_id" : ObjectId("5800d921a3e7535f0d2d673b"),
    "username" : "surya",
    "password" : "surya123"
}

现在我有一个html,其中包含用户名和密码。

如何单独保存用户名和密码并将它们存储在MongoDB中与数据库不同的字符串中?

当我尝试使用“用户名SAI”作为密钥查询数据时,使用这样的Java代码从DB中查询数据:

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;
import java.util.Arrays;

public class MongoDBJDBC {

    public static void main(String args[]){

        try{
            MongoClient client=new MongoClient("localhost", 27017);

            DB db= client.getDB("test");
            System.out.println("Connect to database successfully");

            DBCollection coll= db.getCollection("login");
            System.out.println("Collection POST selected successfully");

            String uname="username";
            String s="sai";


            DBCursor cursor= coll.find(new BasicDBObject(uname, s),new BasicDBObject("_id", 0));
            int i=1;

            while(cursor.hasNext()){

                System.out.println("Inserted doc  :" +i);

                DBObject xyz= cursor.next();
                System.out.println(xyz);

                i++;

            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

}

我得到了这个输出:

Connect to database successfully
Collection POST selected successfully
Inserted doc  :1
{ "username" : "sai" , "password" : "sai123"}

如何操作这些操作以将用户名和密码存储到临时本地字符串中? 请告诉我。

更新: 我把整个代码都放了。请帮我。我也是新人。

1 个答案:

答案 0 :(得分:1)

要实现此类机制,您需要:

  1. 使用coll.ensureIndex(new BasicDBObject("username", 1).append("password", 1))创建由2个字段组成的索引,它可以在执行查询时获得最佳效果。
  2. 获取与提供的用户名和密码匹配的第一个文档,如果找到文档,则用户名/密码正常,否则它们不正确。
  3. 代码可以是:

    BasicDBObject query = new BasicDBObject("username", uname).append("password", s);
    // Gets only the id of a doc that matches with the username and password
    DBObject item = coll.findOne(query, new BasicDBObject("_id", Boolean.TRUE));
    // If != null ok, ko otherwise
    if (item == null) {
        // KO
    } else {
        // OK
    }
    

    所需的导入:

    import com.mongodb.BasicDBObject;
    import com.mongodb.DBObject;
    import com.mongodb.DBCollection;
    

    NB:直接在db中存储这样的密码并不是一个很好的方法,出于安全原因它们应该被定位和散列