【发布时间】:2010-11-18 04:41:28
【问题描述】:
我正在为 iPhone 应用程序使用带有 Sinatra 的 MongoDB。
我有一个users MongoDB 集合和一个picture GridFS 集合。每个用户都有一张图片,因此,最初,我只是将图片的ObjectId 设置为与相应用户相同。这很容易,given the user's ObjectId, get the picture of that user with just one query。然后,我打算将图片的 MD5 哈希值存储在用户对象中,以便 iPhone 知道只有在 MD5 哈希值发生变化时才下载图片。这可行,但我必须modify the Grid Ruby class to get the MD5
但是,Kyle Bankersuggested 我只是在用户对象中存储了picture_id,而不是 MD5。但是,如果我这样做,给定用户ObjectId,我必须首先从用户那里查询picture_id,然后查询图片(2 个查询)。有没有办法在一个查询中获取给定用户ObjectId 的图片?阅读GridFS indexes,我认为有一种方法可以将用户的ObjectId 存储在图片的元数据中,然后在该字段上设置索引。这样,我可以在一个查询中完成。如果这是正确的,那么在 Ruby 中执行此操作的代码是什么样的?
唉,我还要麻烦吗?我可以很容易地使用picture_id 来查询图片,这是我现在要做的,但从句法的角度来看,能够查询图片也很好(在一个索引/快速查询)由user_id。有点像 Facebook 的 graph api 让你做的事情,例如,http://graph.facebook.com/mattdipasquale/picture。
【问题讨论】: