在我的数据库中,我必须存储一个对象ID数组。我该怎么用?像这样:
[ObjectId("50350e12a36feb1be6000364"), ObjectId("57350e12a37fef1be6000922"), ObjectId("10350e17d34ffb1be6200925")]
或类似的东西:
["50350e12a36feb1be6000364", "57350e12a37fef1be6000922", "10350e17d34ffb1be6200925"]
我可以用秒来节省空间,然后转换为ObjectId
,但是我是否通过这种方法失去了任何东西? ObjectId
的行为类似于关系数据库中的外键吗?
答案 0 :(得分:25)
我肯定会采用第一种方法,直接存储ObjectId
。这节省了空间,如ObjectId
is 12 bytes,而第二个进场字符串是24个字节。
此外,如果稍后使用ObjectId
s来获取对象,则存储为ObjectId
可以省去一些麻烦。
答案 1 :(得分:11)
除非你有充分的理由不将它们存储为ObjectIds数组。它更紧凑(12个字节对24)并且更准确地反映了存储的内容。它还可以为跟随ObjectId引用启用驱动程序级支持。