0

iPhoneアプリにSinatra付きのMongoDBを使用しています。

usersMongoDB コレクションとpictureGridFS コレクションがあります。各ユーザーは 1 つの写真を持っているので、最初はObjectId、写真の を対応するユーザーと同じになるように設定しました。これにより、ユーザーの ObjectId が与えられると、たった 1 つのクエリでそのユーザーの画像を取得することが簡単になりました。次に、MD5 ハッシュが変更された場合にのみ iPhone が画像をダウンロードすることを認識できるように、画像の MD5 ハッシュをユーザー オブジェクトに保存することを計画していました。これは機能しますが、MD5 を取得するには Ruby クラスを変更する必要がありましたGrid

しかしその後、Kyle Banker は、MD5 の代わりに をユーザー オブジェクトに格納することを提案しました。picture_idしかし、それを行うと、 user が与えられた場合ObjectId、最初picture_idにユーザーからクエリを実行し、次に画像をクエリする必要があります (2 つのクエリ)。1 つのクエリで、指定されたユーザーの画像を取得する方法はありますObjectIdか? GridFS インデックスを読んで、ユーザーObjectIdを画像のメタデータに保存し、そのフィールドにインデックスを設定する方法があると思います。そうすれば、1 つのクエリで実行できます。それが正しければ、Ruby でそれを行うコードはどのようなものですか?

ああ、私も気にする必要がありますか?を使用して画像を簡単picture_idにクエリすることもできますが、これは今のところ実行しますが、構文の観点から、画像をクエリできると便利です (1 つのインデックス付き/高速クエリで)。によってuser_id。Facebook のグラフ API のようなものです

4

1 に答える 1

1

もちろん。あなたが示唆するように、user_idを画像のファイルオブジェクトのどこかに保存し、そのフィールドにインデックスを作成してください。

于 2010-11-18T16:23:26.277 に答える