В настоящее время я храню серию твитов в виде документов в mongodb, схема которых напрямую отображается на json, возвращаемый потоковым API.
Схема очень многословна со многими вложенными вложенными документами, например,
{
"_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"
}
Иногда встраиваемый URL-адрес будет пустым, в то время как в других случаях он будет содержать более одного значения (в следующем массиве, например, вложенность [0], [1] [n])
Я бы хотелчтобы извлечь значения ссылок из этого документа json.
У меня есть простое приложение Sinatra, в котором я определил модель твитов и, используя динамические атрибуты mongoid, я могу быстро выводить значения из документа следующим образом:
<% @tweets.each do |tweet| %>
<li><%= tweet._id %></li>
<li><%= tweet.user.screen_name %></li>
<li><%= tweet.entities %></li>
Когда я пытаюсь вывести значение типа
<li><%= tweet.entities.urls %></li>
, я начинаю видеть ошибки, когда метод не существует.Сам по себе вызов tweet.entities вернет содержимое вложенного встраивания.У кого-нибудь есть какие-либо идеи относительно того, как я могу проверить наличие встроенного ребенка, чтобы затем перейти к нему?Возможно ли то, что я пытаюсь сделать с помощью монгоида?Мой запрос на данный момент просто возвращает полный документ.