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

Perché MongoDB non usa l'intersezione dell'indice?

Ci sono alcuni dettagli sulla selezione dell'indice nel Problema JIRA SERVER-3071 ma non posso dire se tutto è ancora rilevante per 3.0. Comunque:

MongoDB 3.0.2 sembra non considerare l'interazione dell'indice per intervallo interrogazione. Ma lo farà per intervalli di punti:

> db.orders.find( { item: {$eq : "abc123"}, qty: { $eq: 15 } } ).explain()
...

        {
            "stage" : "FETCH",
            "inputStage" : {
                "stage" : "KEEP_MUTATIONS",
                "inputStage" : {
                    "stage" : "AND_SORTED",
                    "inputStages" : [
                        {
                            "stage" : "IXSCAN",
                            "keyPattern" : {
                                "qty" : 1
                            },
                            "indexName" : "qty_1",
                            "isMultiKey" : false,
                            "direction" : "forward",
                            "indexBounds" : {
                                "qty" : [
                                    "[15.0, 15.0]"
                                ]
                            }
                        },
                        {
                            "stage" : "IXSCAN",
                            "keyPattern" : {
                                "item" : 1
                            },
                            "indexName" : "item_1",
                            "isMultiKey" : false,
                            "direction" : "forward",
                            "indexBounds" : {
                                "item" : [
                                    "[\"abc123\", \"abc123\"]"
                                ]
                            }
                        }
                    ]
                }