Cerco di ottenere tutti i valori distinti (meno di 10 valori possibili) di un determinato campo in una raccolta di grandi dimensioni (3.500.000 documenti, 35 GB).C'è un buon modo per ottenere valori distinti in grandi collezioni in Mongo?
Ho cercato di ottenere questi valori con un db.collection.distinct('field')
, ma è molto lento, anche se c'è un indice (non sembra essere usato).
Qualche suggerimento per migliorare le prestazioni su questa query?
Grazie
Edit stavo usando Mongo 2.4.9. È stato corretto in 2.5.5 (https://jira.mongodb.org/browse/SERVER-2094), ma ho ancora un problema di prestazioni su query come questa db.logs.distinct("version", {wsId: "XXX" })
anche se gli indici esistono per entrambi i campi.
puoi mostrare la struttura del documento, indicizzare e spiegare l'output – Sebastian
Ho appena modificato la mia domanda. Sto usando una versione 2.4.9, sembra che le prestazioni siano state migliorate in 2.5.5. –
Il documento archiviato è piuttosto semplice. È un documento senza campo nidificato, il campo (resultCode) ha un indice semplice. { "v": 1, "chiave": { "resultCode": 1} , "ns": "app_logs.logs", "name": "resultCode_1" } –