It would seem that the Explain Plan is not taking the Collation arguments into account when performing the query. When doing explain() on a shell, it shows me using the index, Compass does not (see attached image).
db.users.find({username:'mark.garrett@allcarepharmacy.com', isActive: true}).collation({locale:'en', strength: 2}).explain() { "queryPlanner" : { "plannerVersion" : 1, "namespace" : "spp.users", "indexFilterSet" : false, "parsedQuery" : { "$and" : [ { "isActive" : { "$eq" : true } }, { "username" : { "$eq" : "mark.garrett@allcarepharmacy.com" } } ] }, "collation" : { "locale" : "en", "caseLevel" : false, "caseFirst" : "off", "strength" : 2, "numericOrdering" : false, "alternate" : "non-ignorable", "maxVariable" : "punct", "normalization" : false, "backwards" : false, "version" : "57.1" }, "winningPlan" : { "stage" : "FETCH", "inputStage" : { "stage" : "IXSCAN", "keyPattern" : { "username" : 1, "isActive" : 1 }, "indexName" : "username_1_isActive_1", "collation" : { "locale" : "en", "caseLevel" : false, "caseFirst" : "off", "strength" : 2, "numericOrdering" : false, "alternate" : "non-ignorable", "maxVariable" : "punct", "normalization" : false, "backwards" : false, "version" : "57.1" }, "isMultiKey" : false, "multiKeyPaths" : { "username" : [ ], "isActive" : [ ] }, "isUnique" : true, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "username" : [ "[\"A)K=\b5)KK1OO\nz)??-)K1G7)KA)-Y\b-EA\u0001$\", \"A)K=\b5)KK1OO\nz)??-)K1G7)KA)-Y\b-EA\u0001$\"]" ], "isActive" : [ "[true, true]" ] } } }, "rejectedPlans" : [ ] }, "serverInfo" : { "host" : "xxxxxxxxxxxxxxxx", "port" : 27017, "version" : "4.0.4-1", "gitVersion" : "8664823baee70273f47949a8cde68bde37c69930" }, "ok" : 1 }