Ho due indici singoli per il campo "creato" nella mia raccolta. Un indice è ordinato in ordine crescente e l'altro è ordinato in ordine decrescente. L'indice che viene ordinato decrescente è più grande dell'indice ordinato crescente. Il campo creato contiene un oggetto Date Javascript. Cosa potrebbe causare questo?Perché l'indice su un campo deve essere di dimensioni diverse a seconda che sia crescente o decrescente in MongoDB
"indexSizes" : {
"_id_" : 212862160,
"created_1" : 136424736,
"created_-1" : 252376768
},
Ecco i dettagli di collection.getIndexes(). L'unica differenza è che l'indice discendente è stato creato in background.
{
"v" : 1,
"key" : {
"created" : 1
},
"name" : "created_1",
"ns" : "Production.accounts"
},
{
"v" : 1,
"key" : {
"created" : -1
},
"name" : "created_-1",
"ns" : "Production.accounts",
"background" : true
}
Ora è una domanda giusta. Mi chiedo il motivo per cui la forma "ascendente" sia inferiore all'indice '_id' in termini di dimensioni. Per la cronaca, si potrebbe considerare che '_id' se un' ObjectId' è già "monotono" o "sempre crescente" e quindi un indicatore naturale di "ordine di creazione" nella propria raccolta. A meno che non sia necessario il timestamp per altri motivi, naturalmente. –
qual è il tipo di valori memorizzati nel creato? Puoi ricreare questo? Ho provato con una semplice collezione mongo e le dimensioni dell'indice sono le stesse per ascendente/discendente. – jcalloway
Gli indici di sfondo finiscono per essere più grandi di quelli creati in primo piano. Inoltre, non è necessario creare versioni ascendenti e discendenti poiché l'ordine non è rilevante per gli indici a campo singolo. – JohnnyHK