对于Mongodb,引用一个对象或使用一个自然的String键会更好吗?

Nic*_*ell 8 mongodb

我正在建立一个不同语言的索引句子语料库.我有一个语言集合,其中包含ObjectId和ISO代码作为键.使用对语言集合的引用或存储像"en"或"fr"这样的键更好吗?

我想这是一个妥协:

  • 易于引用语言
  • 该集合中的对象
  • 在查询中具有某种语言的查询速度
  • 磁盘上数据的大小

我应该知道的任何最佳实践?

Bre*_*ams 8

最后,它真正归结为个人选择以及最适合您应用的选择.

MongoDB对_id强加的唯一要求是它是唯一的.它可以是ObjectId(默认提供),字符串,甚至是嵌入式文档(我记得它不能是一个数组).

在这种情况下,您可以保证ISO代码是唯一值,它可能是理想值.你有一个'已知'主键,它本身也是可识别的,所以使用它而不是生成的ID可能是一个更明智的选择.它还意味着您可以在另一个集合中"引用"此信息,您可以保存ISO代码而不是对象ID; 浏览原始数据的人可以立即识别参考点所指的信息.

作为旁白:

ObjectId的两大好处是它们可以跨多个机器,进程和线程唯一生成,而无需MongoDB服务器进行任何类型的中央序列跟踪.它们也作为一种特殊类型存储在MongoDB中,只使用12个字节(而不是ObjectID的字符串版本的24字节表示)