2013-07-22 17 views
1

我是MongoDB的新手。我正試圖在MongoDB中訪問嵌套的doc。我的示例文檔是MongoDb在java中嵌套文件

{ 
    "Advertisement" : { 
     "html" : "zxcxz" 
    }, 
    "Notification" : { 
     "date_from" : ISODate("2013-06-30T18:30:00Z"), 
     "date_too" : ISODate("2013-07-16T18:30:00Z"), 
     "description" : "vcvc", 
     "url" : "vcvc" 
    }, 
    "_id" : ObjectId("51e4f10ee4b08e0a6ebcbe46"), 
    "group_name" : "sumit", 
    "target_audience" : { 
     "gender" : "male", 
     "section" : "xyz", 
     "catagory" : "--Computer--", 
     "location" : { 
      "country" : "--Country--", 
      "state" : "--State--", 
      "city" : "--City--" 
     } 
    } 
} 

我正在嘗試從target_audience獲取性別。我的java代碼是

DBCursor f=con.coll.find(query); 
while(f.hasNext()) 
{ 
    f.next(); 
    gender=(String) f.curr().get("target_audience.gender"); 
} 

但它返回null。

回答

3

DBCursor.next()DBCursor.curr()的結果是BasicDBObject。對於嵌入文檔鍵,BasicDBObject.get(key)返回BasicDBObject

DBCursor f=con.coll.find(query); 
while(f.hasNext()) 
{ 
    BasicDBObject result = (BasicDBObject) f.next(); 
    BasicDBObject target = (BasicDBObject) result.get("target_audience"); 
    gender = (String) target.get("gender"); 
} 
+1

刪除我的答案,因爲這其中蘊含的例子。我只會在'f.next()'中將施法添加到'BasicDBObject'。 @PrashantThorat考慮接受它。 –