MongoDB GridFS在Ruby中的一对一查询效率

时间:2010-11-18 04:41:29

标签: ruby mongodb gridfs

我正在使用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

1 个答案:

答案 0 :(得分:1)

不确定。就像你建议的那样,只需将user_id存储在图片文件对象的某处,然后在该字段上构建一个索引。