Mongodb Greidfs Однозначная эффективность запроса в рубине
Вопрос
Я использую 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 где-то в объекте файла изображения и постройте индекс на этом поле.