2016-02-12 212 views
3

我在另一個文檔中嵌入了一個文檔。我能夠獲取父級的值,而不是內部文檔。 (註釋行給出錯誤)。以下是代碼。在MongoDB中查詢字段值文檔

DB db = mongoClient.getDB("events"); 
DBCollection coll = db.getCollection("usercomment"); 
BasicDBObject searchQuery = new BasicDBObject("source", "twitter").append("data.id_str", "641400902545024"); 
DBCursor cursor = coll.find(searchQuery); 

while(cursor.hasNext()) { 
    DBObject currDocument = cursor.next(); 
    BasicDBObject newDocument = new BasicDBObject("data", currDocument.get("data")); 
    //System.out.println(currDocument.get("data.user.location").toString()); 
    System.out.println(currDocument.get("companyName").toString()); 
} 

下面是JSON作爲蒙戈(currDocument的價值,我在調試獲得):

{ 
"_id": { 
    "$oid": "55eff71de4b0b91376cb5920" 
}, 
"createdDate": { 
    "$date": "2015-09-09T00:01:06.000Z" 
}, 
"username": "Bubble", 
"userMessage": "Hello from #Iowa.\", 
"entities": { 
    "symbols": [], 
    "urls": [], 
    "hashtags": [{ 
     "text": "Iowa", 
     "indices": [23, 
     28] 
    }, 
    { 
     "text": "WFHM", 
     "indices": [48, 
     53] 
    }, 
    { 
     "text": "twitter", 
     "indices": [69, 
     77] 
    }], 
    "media": [{ 
     "id": 641400900641140736, 
     "sizes": { 
      "small": { 
       "w": 340, 
       "h": 255, 
       "resize": "fit" 
      }, 
      "thumb": { 
       "w": 150, 
       "h": 150, 
       "resize": "crop" 
      }, 
      "medium": { 
       "w": 600, 
       "h": 450, 
       "resize": "fit" 
      }, 
      "large": { 
       "w": 1024, 
       "h": 768, 
       "resize": "fit" 
      } 
     }, 
     "media_url_https": "https://pbs.twimg.com/media/COaAxg_p.jpg", 
     "media_url": "http://pbs.twimg.com/media/UsAAxg_p.jpg", 
     "expanded_url": "http://twitter.com/Bubble/status/64140024/photo/1", 
     "indices": [88, 
     110], 
     "id_str": "6414009140736", 
     "display_url": "pic.twitter.com/ErB8Ed8if", 
     "type": "photo", 
     "url": "http://t.co/rB8Ed8if" 
    }], 
    "user_mentions": [{ 
     "id": 1178011, 
     "name": "XXX", 
     "indices": [0, 
     11], 
     "screen_name": "XXX", 
     "id_str": "1178011" 
    }] 
}, 
"userImage": "http://pbs.twimg.com/profile_images/542698316577/Jvx7sIr_normal.jpeg", 
"feedLink": "https://www.twitter.com/statuses/6414009085024", 
"feed_id": "64140541185024", 
"inReplyTo": "null", 
"timestamp": "146866000", 
"source": "twitter", 
"contactName": "###", 
"postCat": "post", 
"collection": "usercomment", 
"messageId": "1400902541185024", 
"companyName": "XXX", 
"type": "citation", 
"data": { 
    "retweeted": false, 
    "in_reply_to_screen_name": "XXX", 
    "possibly_sensitive": false, 
    "lang": "en", 
    "in_reply_to_status_id_str": null, 
    "id": 6414009025185024, 
    "in_reply_to_user_id_str": "1178011", 
    "in_reply_to_status_id": null, 
    "created_at": "Wed Sep 11 00:01:06 +0000 2015", 
    "favorite_count": 1, 
    "place": { 
     "id": "1c67f9d9ae7f69", 
     "bounding_box": { 
      "type": "Polygon", 
      "coordinates": [[[-93.709504, 
      41.49702], 
      [-93.503235, 
      [-93.503235, 
      41.6514656], 
      [-93.709504, 
      41.6514656]]] 
     }, 
     "place_type": "city", 
     "contained_within": [], 
     "name": "DesMoines", 
     "attributes": { 

     }, 
     "country_code": "US", 
     "url": "https://api.twitter.com/1.1/geo/id/1c6ae7f69.json", 
     "country": "United States", 
     "full_name": "Des Moines, IA" 
    }, 
    "coordinates": null, 
    "metadata": { 
     "result_type": "recent", 
     "iso_language_code": "en" 
    }, 
    "geo": null, 
    "is_quote_status": false, 
    "source": "<a href=\"http://twitter.com\" rel=\"nofollow\">Twitter Web Client</a>", 
    "favorited": false, 
    "in_reply_to_user_id": 1178011, 
    "retweet_count": 0, 
    "id_str": "641400902541185024", 
    "user": { 
     "location": "Des Moines, Iowa", 
     "default_profile": false, 
     "profile_background_tile": false, 
     "statuses_count": 3721, 
     "lang": "en", 
     "profile_link_color": "B37700", 
     "profile_banner_url": "https://pbs.twimg.com/profile_banners/60056624/14246371", 
     "id": 60054624, 
     "following": false, 
     "protected": false, 
     "favourites_count": 200, 
     "profile_text_color": "3333", 
     "description": "Inventor thinkORANGE(™), eteran", 
     "verified": false, 
     "contributors_enabled": false, 
     "profile_sidebar_border_color": "C0DED", 
     "name": "Robert Res, Jr", 
     "profile_background_color": "C0DED", 
     "created_at": "Tue Jun 05 22:17:22 +0000 2012", 
     "is_translation_enabled": false, 
     "default_profile_image": false, 
     "followers_count": 1615, 
     "has_extended_profile": false, 
     "profile_image_url_https": "https://pbs.twimg.com/profile_images/54269577/Jvx79sIr_normal.jpeg", 
     "geo_enabled": true, 
     "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/b.png", 
     "profile_background_image_url_https": "https://abs.twimg.com/images/themes/thee1/bg.png", 
     "follow_request_sent": false, 
     "entities": { 
      "description": { 
       "urls": [] 
      }, 
      "url": { 
       "urls": [{ 
        "expanded_url": "http://about.me/bob.jr", 
        "indices": [0, 
        22], 
        "display_url": "about.me/bob.rjr", 
        "url": "http://t.co/rLVnPn" 
       }] 
      } 
     }, 
     "url": "http://t.co/ryRnPn", 
     "utc_offset": null, 
     "time_zone": null, 
     "notifications": false, 
     "profile_use_background_image": true, 
     "friends_count": 1770, 
     "profile_sidebar_fill_color": "DDF6", 
     "screen_name": "BubbleWormBob", 
     "id_str": "600546624", 
     "profile_image_url": "http://pbs.twimg.com/profile_images/54269837/Jvx79rmal.jpeg", 
     "listed_count": 27, 
     "is_translator": false, 
     "state": "IA" 
    } 
}, 
"sentimentUpdated": "Y", 
"profileUpdated": "Y", 
"feedLoadDate": "20160205924", 
"kafkaoffset": "2075805-2", 
"sentiment": "Positive", 
"posWords": ["great"], 
"negWords": [], 
"ner": { 
    "per": [], 
    "org": [], 
    "loc": [], 
    "oth": ["http:\\/\\/t.co\\/EGrB8E8if"] 
}, 
"kloudid": "534802137717", 
"kscore": "54.086", 
"kbucket": "50-59", 
"kscoredaychange": -0.05502, 
"kscoreweekchange": 1.255317743, 
"kscoremonthchange": 5.7708270082, 
"kinfluencerscount": 5, 
"kinfluenceescount": 5, 
"ktopics": ",Leadership,Patement,India,", 
"rtCount": 0, 
"replyCount": 0, 
"engCount": 0, 
"mediaType": "image", 
"mediaURL": "http://pbs.twimg.com/media/COa2g_p.jpg" 

}

如何從這裏嵌套jsons字段值?

回答

0

您是否嘗試過一個接一個地拉動每個節點? 我想你想獲得"data.user.location"

BasicDBObject newDocument = new BasicDBObject("data", currDocument.get("data")); 
System.out.println(((DBObject)newDocument.get("data")).get("location")); 
+0

是的,它worked..I想這個問題是與鑄造。我們需要投它並獲得它。謝謝你的幫助。不幸的是,我是一個使用Mongo Java API的新手,並且沒有可用於指導的好的分步教程 – user5917011