Mongodb Greidfs Однозначная эффективность запроса в рубине

StackOverflow https://stackoverflow.com/questions/4211739

  •  25-09-2019
  •  | 
  •  

Вопрос

Я использую Mongodb W / Sinatra для приложения для iPhone.

у меня есть users Коллекция монгодб и picture Сборник Gridfs. У каждого пользователя есть одна картинка, поэтому изначально я просто установил ObjectId Для картины, чтобы быть таким же, как соответствующий пользователь. Это было легко, Учитывая ObjectID пользователя, получите изображение этого пользователя только одним запросом. Отказ Затем я планировал хранить хеш MD5 картинки в пользовательском объекте, чтобы iPhone знал бы скачать изображение только в том случае, если бы хэш MD5 изменился. Это будет работать, но я должен был модифицировать Grid Класс Ruby, чтобы получить MD5

Но потом, Кайл Банкир предложенный что я просто магазин picture_id, вместо MD5, в пользовательском объекте. Но, если я сделаю это, учитывая пользователя ObjectId, Мне пришлось сначала запросить picture_id От пользователя, а затем запрашивайте картинку (2 запроса). Есть ли способ, в одном запросе, чтобы получить картину, данную пользователя ObjectId? Чтение дальше Индексы Gridfs, Я думаю, что есть способ хранить пользователя ObjectId В метаданных изображения, а затем установить индекс на это поле. Таким образом, я мог бы сделать это в одном запросе. Если это правильно, как выглядит код, чтобы сделать это в Ruby?

Увы, я должен даже беспокоить? Я мог бы просто использовать picture_id Чтобы запросить картинку, которая в том, что я сделаю сейчас, но это также было бы неплохо от синтаксической перспективы, чтобы иметь возможность запросить картинку (в одном индексированном / быстром запросе) user_id. Отказ Вроде как Facebook's Graph API позволяет вам делать, например, http://graph.facebook.com/mattdipasquale/picture.

Это было полезно?

Решение

Конечно. Как вы предлагаете, просто храните user_id где-то в объекте файла изображения и постройте индекс на этом поле.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top