使用java操作mongodb经常需要把DBObject对象转换成json字符串,或反过来到json字符串转换成DBObject对象保存
如果要准确选择一个对象最准确的方法是直接根据期objectid进行查找,以下例子讲述这些用法。
方法一、利用json字符串直接生成mongodb的 DBObject对象
例子中的json字符串是利用DBObject的toString()方法生成的,json的官方要求是使用双引号,如果要严格办事,那么必把json串的的"用转义字符\"替换。
-
String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
-
strJson=strJson.replaceAll("\'", "\""); //把单引号替换成双引号,不用这句也可以执行成功。加这句是为了让我记住json应用中存在单双引号问题,在jquery中,如果json是用单引号的话,就会出错,在php中json用单引号也会出错。
-
DBObject query = (BasicDBObject) JSON.parse(strJson);
方法二、利用Objectid对象生成id后再new出
DBObject对象
-
ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
-
DBObject query = new BasicDBObject("_id", oid);
下面给出一段完整的根据Objectid查找出mongodb对象后,以json格式输出相关信息的DEMO函数,该段代码只是demo性质,没有关注逻辑的严密性。
-
public String testmongodb(){
-
String myStr = "";
-
try{
-
ServerAddress serverAddress=new ServerAddress("127.0.0.1",27017);
-
-
MongoOptions mongoOptions=new MongoOptions();
-
mongoOptions.autoConnectRetry=true;
-
Mongo myMongo = new Mongo(serverAddress,mongoOptions);
-
-
DB mydb = myMongo.getDB("admin");
-
char[] pwd="123456".toCharArray();
-
boolean blAuth=mydb.authenticate("admin", pwd);
-
-
mydb=myMongo.getDB("test");
-
DBCollection myColl = mydb.getCollection("testColl");
-
//ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
-
//DBObject query = new BasicDBObject("_id", oid);
-
String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
-
DBObject query = (BasicDBObject) JSON.parse(strJson);
-
-
DBCursor myCur = myColl.find(query);
-
while(myCur.hasNext()){
-
myStr=myStr+myCur.next().toString();
-
}
-
-
} catch (UnknownHostException e){
-
e.printStackTrace();
-
}
-
return myStr;
-
}
阅读(2339) | 评论(0) | 转发(0) |