Я использую MongoDB с Sinatra для приложения для iPhone.
У меня есть коллекция users
MongoDB и коллекция 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
. Что-то вроде графика API Facebook позволяет вам делать, например, http://graph.facebook.com/mattdipasquale/picture.