我有一个嵌入另一个文档的文档。我能够获取父文件的值,但不能获取内部文档的值。 (注释行给出错误)。下面是代码。
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());
}
下面是Mongo中的json(我在Debug中得到的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 :(得分:0)
您是否尝试逐个拉动每个节点,如下所示。
我想你想得到"data.user.location"
BasicDBObject newDocument = new BasicDBObject("data", currDocument.get("data"));
System.out.println(((DBObject)newDocument.get("data")).get("location"));