18

在我的数据库中,我必须存储一组对象 ID。我应该使用什么?像这样的东西:

[ObjectId("50350e12a36feb1be6000364"), ObjectId("57350e12a37fef1be6000922"), ObjectId("10350e17d34ffb1be6200925")]

或类似的东西:

["50350e12a36feb1be6000364", "57350e12a37fef1be6000922", "10350e17d34ffb1be6200925"]

我可以用第二个来节省空间,然后投射到ObjectId,但是使用这种方法我会失去什么吗?ObjectIds 的行为类似于关系数据库中的外键吗?

4

2 回答 2

25

我肯定会采用第一种方法,ObjectId直接存储 s 。这节省了空间,因为ObjectId是 12 个字节,而第二种方法字符串是 24 个字节。

此外,如果ObjectIds 用于稍后获取对象,存储 asObjectId可以节省一些麻烦。

于 2012-09-17T18:20:06.617 回答
11

除非您有充分的理由不这样做,否则将它们存储为 ObjectId 数组。它更紧凑(12 字节与 24 字节),并且更准确地反映了存储的内容。它还可以启用对以下 ObjectId 引用的驱动程序级支持。

于 2012-09-17T18:14:47.010 回答