我正在为 iPhone 应用程序使用带有 Sinatra 的 MongoDB。
我有一个users
MongoDB 集合和一个picture
GridFS 集合。每个用户都有一张图片,所以,最初,我只是将ObjectId
图片设置为与相应用户相同。这使得在给定用户的 ObjectId 的情况下,只需一次查询即可轻松获取该用户的图片。然后,我打算将图片的 MD5 哈希值存储在用户对象中,以便 iPhone 知道只有在 MD5 哈希值发生变化时才下载图片。这可行,但我必须修改Grid
Ruby 类才能获得 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。