2012-09-17 40 views
18

En mi base de datos tengo que almacenar una matriz de identificadores de objeto. ¿Qué debería usar? Algo como esto:MongoDB almacenando matrices de ObjectId

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

o menos así:

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

pude ahorrar espacio con el segundo, y luego arrojado a ObjectId, pero estoy perdiendo nada por la utilización de este enfoque? ¿ObjectId s se comportan como claves foráneas en bases de datos relacionales?

Respuesta

25

Definitivamente iré con la primera aproximación, almacenando el ObjectId s directamente. Esto ahorra espacio, como ObjectId is 12 bytes mientras que la segunda cadena de aproximación es de 24 bytes.

Además, si se utilizan los ObjectId para buscar los objetos más adelante, guardarlos como ObjectId ahorra algunos problemas.

11

A menos que tenga una buena razón para no hacerlo, guárdelos como una matriz de ObjectIds. Es más compacto (12 bytes vs. 24) y refleja con mayor precisión lo que está almacenado. También puede habilitar el soporte de nivel de controlador para las siguientes referencias de ObjectId.

+4

+1, Sí, creo que hay un malentendido básico sobre el tamaño de ObjectIds en la pregunta. –

Cuestiones relacionadas