2015-06-25 10 views
7

So come la colonna _id contiene una rappresentazione del timestamp quando il documento è stato inserito nella raccolta. ecco un programma di utilità online per convertirlo in timestamp: http://steveridout.github.io/mongo-object-time/È MongoDB _id (ObjectId) generato in ordine crescente?

Quello che mi chiedo è se la stringa ID dell'oggetto stesso è garantita mantenere l'ordine crescente o no? cioè questo paragone ritorna sempre vero?

"newest object id" > "second newest object id"

+0

In attesa intendete l'ordine di inserimento o solo l'ordine di creazione _id? – Sammaye

risposta

12

No, non v'è alcuna garanzia. Da official documentation:

La relazione tra l'ordine dei valori ObjectId e il tempo di generazione non è rigorosa in un singolo secondo. Se più sistemi o più processi o thread su un singolo sistema generano valori, entro un singolo secondo; I valori ObjectId non rappresentano un ordine di inserzione rigoroso. L'inclinazione dell'orologio tra i client può anche comportare ordinamenti non rigidi anche per i valori, poiché i driver client generano valori ObjectId, non il processo mongod.

+0

Grazie per il riferimento. Quindi risulta in ordine ascendente su un intervallo di tempo più ampio ma non su ordini inferiori a un secondo. – r2d2oid

+0

Bene, starei attento, nel peggiore dei casi "un intervallo di tempo più ampio" può essere davvero ampio. Considerare lo scenario quando si inserisce un documento, impostare l'orologio di sistema al 1 ° gennaio 1970 e inserirne un altro. – zero323

2

_id: ObjectId (4 byte timestamp, 3 byte macchina id, 2 byte ID processo, 3 byte incrementatore)

Questa è la struttura id. Quindi solo gli ultimi 3 byte aumenteranno in modo univoco. Quindi la risposta alla tua domanda è sì.

+0

quindi la tua risposta è parzialmente corretta, tuttavia con la considerazione dalla risposta sopra è quasi crescente ma non strettamente poiché i byte di data e ora hanno un valore più alto e potrebbe essere fuori uso in scale inferiori ad 1 secondo. – r2d2oid

Problemi correlati