Ho un documento con un campo _id
ha tipo ObjectId
e un campo created_at
ha tipo Date
.Mongodb ordinamento per data
_id
è ovviamente in aumento e il valore di created_at
è la data corrente dovrebbe essere in aumento.
Quindi la mia domanda è: c'è
- qualche possibilità che 2 documenti, A e B,
A._id > B._id
, maA.created_at < B.created_at
. - Come mantenere
created_at
il più preciso possibile, quindi l'ordine dicreated_at
corrisponde a_id
.
L'unica possibilità "reale" sarebbe dove è stato generato '_id' a un'origine in cui il "tempo" corrente era dietro l'istanza del server e la proprietà "" create_at' "proveniva da [' $ currentDate'] (https://docs.mongodb.org/manual/reference/operator/update/ currentDate /) sul server stesso, piuttosto che in remoto. Inoltre, nonostante i "migliori sforzi", il '' created_at "' potrebbe infatti essere "cambiato", mentre il campo '_id' è" immutabile "e ** non può ** essere modificato. Quindi un 'ObjectId' in' _id' non può mai cambiare dal suo valore iniziale, ma qualsiasi altra proprietà non ha tale distinzione. –
https://docs.mongodb.org/manual/reference/method/ObjectId/ Nel link sopra puoi vedere che mongodb usa il timestamp per creare il suo ID..Perché non ci può essere uno scenario quando questo potrebbe verificarsi, a meno che non si cambi l'ora di sistema in cui il server è in esecuzione .. –
@AnirudhModi Bene "tecnicamente" ci possono essere casi come menzionato. L'altra cosa da considerare è che il "tempo" in un 'ObjectId' è ** non ** accurato al millisecondo, dove sarà la data di ogni BSON. Quindi più valori di 'ObjectId' possono rappresentare lo" stesso tempo "(anche se sono ancora monotoni indipendentemente), dove questo è" meno probabile "in un campo contenente un oggetto' Date' completo, o una versione numerica di un "più preciso" "misurazione del tempo. Dipende dall'uso e generalmente da un argomento ragionevolmente ampio. –