使用java操作mongodb经常需要把DBObject对象转换成json字符串,或反过来到json字符串转换成DBObject对象保存
如果要准确选择一个对象最准确的方法是直接根据期objectid进行查找,以下例子讲述这些用法。


方法一、利用json字符串直接生成mongodb的 DBObject对象
例子中的json字符串是利用DBObject的toString()方法生成的,json的官方要求是使用双引号,如果要严格办事,那么必把json串的的"用转义字符\"替换。

点击(此处)折叠或打开

  1. String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
  2. strJson=strJson.replaceAll("\'", "\""); //把单引号替换成双引号,不用这句也可以执行成功。加这句是为了让我记住json应用中存在单双引号问题,在jquery中,如果json是用单引号的话,就会出错,在php中json用单引号也会出错。

  3.  DBObject query = (BasicDBObject) JSON.parse(strJson);

方法二、利用Objectid对象生成id后再new出DBObject对象

点击(此处)折叠或打开

  1. ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
  2. DBObject query = new BasicDBObject("_id", oid);
下面给出一段完整的根据Objectid查找出mongodb对象后,以json格式输出相关信息的DEMO函数,该段代码只是demo性质,没有关注逻辑的严密性。

点击(此处)折叠或打开

  1. public String testmongodb(){
  2.         String myStr = "";
  3.         try{
  4.             ServerAddress serverAddress=new ServerAddress("127.0.0.1",27017);

  5.             MongoOptions mongoOptions=new MongoOptions();
  6.             mongoOptions.autoConnectRetry=true;
  7.             Mongo myMongo = new Mongo(serverAddress,mongoOptions);

  8.             DB mydb = myMongo.getDB("admin");
  9.             char[] pwd="123456".toCharArray();
  10.             boolean blAuth=mydb.authenticate("admin", pwd);

  11.             mydb=myMongo.getDB("test");
  12.             DBCollection myColl = mydb.getCollection("testColl");
  13.             //ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
  14.             //DBObject query = new BasicDBObject("_id", oid);
  15.             String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
  16.             DBObject query = (BasicDBObject) JSON.parse(strJson);
  17.             
  18.             DBCursor myCur = myColl.find(query);
  19.             while(myCur.hasNext()){
  20.                 myStr=myStr+myCur.next().toString();
  21.             }
  22.             
  23.         } catch (UnknownHostException e){
  24.             e.printStackTrace();
  25.         }
  26.         return myStr;
  27.     }



10-28 21:29