我在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"}
如何操作这些操作以将用户名和密码存储到临时本地字符串中? 请告诉我。
更新: 我把整个代码都放了。请帮我。我也是新人。
答案 0 :(得分:1)
要实现此类机制,您需要:
coll.ensureIndex(new BasicDBObject("username", 1).append("password", 1))
创建由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中存储这样的密码并不是一个很好的方法,出于安全原因它们应该被定位和散列