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

Mongo $in con indice composto

Poiché hai già creato un indice composto per (a, b) , tutte le espressioni delle clausole sono supportate dagli indici -> mongo utilizzerà la scansione dell'indice invece della scansione della raccolta. Probabilmente è abbastanza veloce.

Riferimento:$ o clausole e indici

Ora sulla tua domanda

$in abbinare l'intero campo. Se vuoi abbinare (a,b) quindi ovviamente (a,b) deve diventare un oggetto incorporato da cercare con $in .

Non sono sicuro che la creazione di oggetti incorporati soddisfi il tuo schema/requisito corrente. Ma se è il caso, $in è noto per prestazioni migliori rispetto a $or :

In questo caso, se hai incorporato un oggetto come:{e: {a: 'x', b: 'y'}} quindi db.collections.createIndex({e: 1}) abbinato a $in accelererà le cose