我正在与Sinatra& amp;重建Lovers on Facebook Redis的。我喜欢Redis,因为它没有长(12字节)BSON ObjectIds,我为每个用户存储了一组Facebook user_ids。这些集合是requests_sent,requests_received和&关系,它们都包含Facebook用户ID。
我正在考虑切换到MongoDB,因为我想使用它的地理空间索引。如果我这样做,我想使用FB用户ID作为_id字段,因为我希望集合很小,我希望JSON响应很小。但是,BSON ObjectId是否更好(使用MongoDB更高效)而不仅仅是一个整数(fb user_id)?
答案 0 :(得分:2)
据我所知 除 之外没有重大的效率差异,例如按日期排序(因为ObjectId中包含日期时间等等)< / p>
例如,您失去了通过 _id 进行简单排序的能力,您也会失去sharding and distribution的好处。除此之外,虽然我仍然个人使用ObjectId无论如何 ...只要 int 是unquie(当然)......你应该没问题
由于 _id 在查询中总是“回来”,我想你会节省一点时间和数据传输(一点点。)
如果你愿意的话,你甚至可以让你的 _id 成为一个数组,并且所有索引都很好地看到这个answer(并不是我大多数时候都会推荐它。 )