使用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);
点击(此处)折叠或打开
- 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;
- }