我正在使用MongoDB w / Sinatra作为iPhone应用程序。
我有一个users
MongoDB集合和一个picture
GridFS集合。每个用户都有一张图片,因此,最初,我只是将图片的ObjectId
设置为与相应的用户相同。这让我很容易,given the user's ObjectId, get the picture of that user with just one query。然后,我计划将图片的MD5哈希值存储在用户对象中,这样只有当MD5哈希值发生变化时,iPhone才会知道下载图片。这可行,但我必须modify the Grid
Ruby class to get the MD5
但是,Kyle Banker suggested我只是在用户对象中存储了picture_id
而不是MD5。但是,如果我这样做,给定用户ObjectId
,我必须先从用户查询picture_id
,然后查询图片(2个查询)。在一个查询中,是否有一种方法可以获得给定用户ObjectId
的图片?阅读GridFS indexes,我认为有一种方法可以将用户的ObjectId
存储在图片的元数据中,然后在该字段上设置索引。这样,我可以在一个查询中完成。如果这是正确的,那么在Ruby中代码是什么样的?
picture_id
来查询图片,这就是我现在要做的,但从语法的角度来看,能够查询图片(在一个图片中)也很好user_id
的索引/快速查询。有点像Facebook的图形api可以让你做到,例如http://graph.facebook.com/mattdipasquale/picture。
答案 0 :(得分:1)
不确定。就像你建议的那样,只需将user_id存储在图片文件对象的某处,然后在该字段上构建一个索引。