2016-10-14 17 views
1

我在Mongo DB的數據庫中有這樣的文檔。如何使用Java將數據保存到MongoDB的字符串中?

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

現在我有一個html,它需要用戶名和密碼。

如何單獨保存用戶名和密碼並將它們存儲到MongoDB中數據庫的單獨字符串中?

當我試圖用Java代碼像這樣使用「用戶名SAI」爲重點,從數據庫查詢數據:

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"} 

我如何操作這些操作來將用戶名和密碼存儲到臨時本地字符串中? 請告訴我。

更新: 我已經把整個代碼。請幫幫我。我也是新的。

+0

哼直接存儲這樣的密碼在數據庫似乎不是一個好的方法,因爲安全原因,他們應該被提交和散列 –

回答

1

爲了實現這種機制,你將需要:

  1. coll.ensureIndex(new BasicDBObject("username", 1).append("password", 1))創建2個字段組成的指數,它允許以獲得最佳的性能時,它會執行查詢。
  2. 獲取與提供的用戶名和密碼匹配的第一個文檔,如果可以找到文檔,則用戶名/密碼正常,否則它們不正確。

的代碼可能是:

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是不是一個好方法出於安全原因,他們應該被提名和哈希

+0

我在主函數()中使用此代碼。 所以回報是一個問題。 能否請你幫我遠一點 –

+0

請再次檢查 –

+0

能否請你幫我整個程序 直接從進口中的代碼,請.. 我真的堅持 –

相關問題