qlik-oss / mongocursorpagination

MIT License
5 stars 9 forks source link

Update readme with more index details #26

Closed EtienneDufresne closed 3 years ago

EtienneDufresne commented 3 years ago

Updating the readme and the mgo integration test to talk about _id which has to be part of the index.

> db.items.createIndex({ name: 1, _id: 1 })
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 2,
        "numIndexesAfter" : 3,
        "ok" : 1
}

> db.items.insert({"name": "Etienne3"})
> db.items.insert({"name": "Etienne2"})
> db.items.insert({"name": "Etienne1"})
> db.items.insert({"name": "Etienne1"})
> db.items.insert({"name": "Etienne2"})
> db.items.insert({"name": "Etienne3"})

> db.items.find( { name: { $regex: /enne/, $options: "si" } } ).sort( { name: 1, _id: 1 } )
{ "_id" : ObjectId("602d751d118e3d88b0e43437"), "name" : "Etienne1" }
{ "_id" : ObjectId("602d75ab1fd17ad69d6482d7"), "name" : "Etienne1" }
{ "_id" : ObjectId("602d7505118e3d88b0e43435"), "name" : "Etienne2" }
{ "_id" : ObjectId("602d75ad1fd17ad69d6482d8"), "name" : "Etienne2" }
{ "_id" : ObjectId("602d7507118e3d88b0e43436"), "name" : "Etienne3" }
{ "_id" : ObjectId("602d75b11fd17ad69d6482d9"), "name" : "Etienne3" }

> db.items.find( { name: { $regex: /enne/, $options: "si" } } ).sort( { name: 1, _id: 1 } ).explain()
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "test.items",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "name" : {
                                "$regex" : "enne",
                                "$options" : "si"
                        }
                },
                "queryHash" : "9461B497",
                "planCacheKey" : "5727C12B",
                "winningPlan" : {
                        "stage" : "FETCH",
                        "inputStage" : {
                                "stage" : "IXSCAN",
                                "filter" : {
                                        "name" : {
                                                "$regex" : "enne",
                                                "$options" : "si"
                                        }
                                },
                                "keyPattern" : {
                                        "name" : 1,
                                        "_id" : 1
                                },
                                "indexName" : "name_1__id_1",
                                "isMultiKey" : false,
                                "multiKeyPaths" : {
                                        "name" : [ ],
                                        "_id" : [ ]
                                },
                                "isUnique" : false,
                                "isSparse" : false,
                                "isPartial" : false,
                                "indexVersion" : 2,
                                "direction" : "forward",
                                "indexBounds" : {
                                        "name" : [
                                                "[\"\", {})",
                                                "[/enne/si, /enne/si]"
                                        ],
                                        "_id" : [
                                                "[MinKey, MaxKey]"
                                        ]
                                }
                        }
                },
                "rejectedPlans" : [ ]
        },
        "serverInfo" : {
                "host" : "6be5cb87c8d5",
                "port" : 27017,
                "version" : "4.2.12",
                "gitVersion" : "5593fd8e33b60c75802edab304e23998fa0ce8a5"
        },
        "ok" : 1
}