2012-09-17 11 views
18

Nel mio database devo memorizzare una serie di ID oggetto. Cosa dovrei usare? Qualcosa di simile a questo:MongoDB che memorizza gli array di ObjectId's

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

o qualcosa di simile:

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

ho potuto risparmiare spazio con la seconda, e poi gettato a ObjectId, ma sto perdere nulla utilizzando questo approccio? I comportamenti ObjectId si comportano come chiavi esterne nei database relazionali?

risposta

25

Vorrei assolutamente andare con il primo approccio, memorizzando direttamente i ObjectId s. Ciò consente di risparmiare spazio, come ObjectId is 12 bytes mentre la seconda stringa di approccio è di 24 byte.

Inoltre, se gli ObjectId vengono utilizzati per recuperare gli oggetti in un secondo momento, la memorizzazione come ObjectId consente di risparmiare alcuni problemi.

11

A meno che non si abbia una buona ragione per non memorizzarli come una serie di ObjectId. È più compatto (12 byte contro 24) e riflette più accuratamente ciò che è memorizzato. Può anche abilitare il supporto a livello di driver per i seguenti riferimenti ObjectId.

+4

+1, Sì, penso che ci sia un malinteso di base sulla dimensione degli ObjectId nella domanda. –