MongoDB - ObjectId

Abbiamo utilizzato MongoDB Object Id in tutti i capitoli precedenti. In questo capitolo capiremo la struttura di ObjectId.

Un ObjectId è un tipo BSON a 12 byte con la seguente struttura:

  • I primi 4 byte che rappresentano i secondi trascorsi dall'epoca unix
  • I prossimi 3 byte sono l'identificatore della macchina
  • I prossimi 2 byte sono costituiti da process id
  • Gli ultimi 3 byte sono un valore di contatore casuale

MongoDB utilizza ObjectIds come valore predefinito di _idcampo di ogni documento, che viene generato durante la creazione di qualsiasi documento. La complessa combinazione di ObjectId rende unici tutti i campi _id.

Creazione di un nuovo ID oggetto

Per generare un nuovo ObjectId utilizzare il codice seguente:

>newObjectId = ObjectId()

L'istruzione precedente ha restituito il seguente id generato in modo univoco:

ObjectId("5349b4ddd2781d08c09890f3")

Invece di MongoDB che genera l'ObjectId, puoi anche fornire un id a 12 byte -

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

Creazione di timestamp di un documento

Poiché _id ObjectId per impostazione predefinita memorizza il timestamp a 4 byte, nella maggior parte dei casi non è necessario memorizzare l'ora di creazione di alcun documento. Puoi recuperare l'ora di creazione di un documento utilizzando il metodo getTimestamp -

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

Ciò restituirà l'ora di creazione di questo documento nel formato di data ISO -

ISODate("2014-04-12T21:49:17Z")

Conversione di ObjectId in String

In alcuni casi, potrebbe essere necessario il valore di ObjectId in un formato stringa. Per convertire ObjectId in stringa, utilizzare il codice seguente:

>newObjectId.str

Il codice sopra restituirà il formato stringa del Guid -

5349b4ddd2781d08c09890f3