0

我正在为 iPhone 应用程序使用带有 Sinatra 的 MongoDB。

我有一个usersMongoDB 集合和一个pictureGridFS 集合。每个用户都有一张图片,所以,最初,我只是将ObjectId图片设置为与相应用户相同。这使得在给定用户的 ObjectId 的情况下,只需一次查询即可轻松获取该用户的图片。然后,我打算将图片的 MD5 哈希值存储在用户对象中,以便 iPhone 知道只有在 MD5 哈希值发生变化时才下载图片。这可行,但我必须修改GridRuby 类才能获得 MD5

但是后来,Kyle Banker 建议我只picture_id在用户对象中存储 MD5 而不是 MD5。但是,如果我这样做,给定一个用户ObjectId,我必须首先picture_id从用户那里查询,然后查询图片(2 个查询)。有没有办法在一个查询中获取给定用户的图片ObjectId?阅读GridFS 索引,我认为有一种方法可以将用户存储ObjectId在图片的元数据中,然后在该字段上设置索引。这样,我可以在一个查询中完成。如果这是正确的,那么在 Ruby 中执行此操作的代码是什么样的?

唉,我应该打扰吗?我可以很容易地使用picture_id来查询图片,这就是我现在要做的,但从句法的角度来看,能够查询图片也很好(在一个索引/快速查询中)由user_id. 有点像 Facebook 的图形 api 让你做,例如http://graph.facebook.com/mattdipasquale/picture

4

1 回答 1

1

当然。就像您建议的那样,只需将 user_id 存储在图片文件对象中的某个位置,并在该字段上建立一个索引。

于 2010-11-18T16:23:26.277 回答