MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query con intervallo lento su un indice multichiave

Ho trovato la mia risposta in questa domanda:Ordine di $lt e $gt nella query dell'intervallo MongoDB

Il mio indice è un indice multichiave (su tags ) e sto eseguendo una query di intervallo (su post_time ). Apparentemente , MongoDB non può utilizzare entrambi i lati dell'intervallo come filtro in questo caso, quindi seleziona semplicemente il $gte clausola, che viene prima. Dato che il mio limite inferiore è il post_time più basso valore, MongoDB avvia la scansione di tutti gli oggetti.

Sfortunatamente, questa non è l'intera storia. Cercando di risolvere il problema, ho creato anche indici non multichiave ma MongoDB ha insistito per usare quello cattivo. Questo mi ha fatto pensare che il problema fosse altrove. Infine, ho dovuto eliminare l'indice multichiave e crearne uno senza i tags campo. Adesso va tutto bene.