I currently store a series of tweets as documents in mongodb the schema of which directly map to the json returned by the streaming API.
The schema is very verbose with many nested embedded documents e.g.
{
"_id": ObjectId("4f547c17e948fb6e2e00197d"),
"key: value",
"...",
"...",
"entities": {
"urls": [
{
"indices": [
58,
78
],
"display_url": "bit.ly\/yJwQsm",
"url": "http:\/\/t.co\/x5ccL6So",
"expanded_url": "http:\/\/bit.ly\/yJwQsm"
}
],
}
"other parent key pair values here"
}
Sometimes the urls embed will be empty while other times it will contain more than one value (in a further array like nesting [0], [1] [n])
I'd like to extract the link values from this json document.
I have a simple Sinatra app where I've defined a Tweets model and using mongoid's dynamic attributes I'm able to quickly output values from the document as follows:
<% @tweets.each do |tweet| %>
<li><%= tweet._id %></li>
<li><%= tweet.user.screen_name %></li>
<li><%= tweet.entities %></li>
When I try to output a value like
<li><%= tweet.entities.urls %></li>
I start to see errors where the method does not exist. The "tweet.entities" call on it's own will return the contents of the nested embed. Does anyone have any ideas as to how I can check for the existence of the child embed so I can then traverse down into it? Is what I'm trying to do even possible with mongoid? My query at the moment just returns the full document.