{ "_comment": [ "Inputs only. Expectations are measured -- see record.js.", "Hashed indexes. The tree is ordered by a hash, so it answers equality and", "nothing else; every read case here exists to pin that a range query and a", "sort still come back *correct*, because the planner declining to use the", "index is the only thing that makes them so." ], "documents": [ { "_id": 1, "a": 1, "s": "x" }, { "_id": 2, "a": 5, "s": "y" }, { "_id": 3, "s": "z" }, { "_id": 4, "a": 5, "s": "x" } ], "cases": [ { "description": "a hashed index is created and names itself for the plugin", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "listIndexes", "arguments": {} } ] }, { "description": "an equality query answers every match", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": { "a": 5 }, "sort": { "_id": 1 } } } ] }, { "description": "equality against a value nothing holds", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": { "a": 99 }, "sort": { "_id": 1 } } } ] }, { "description": "equality against a missing field", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": { "a": null }, "sort": { "_id": 1 } } } ] }, { "description": "a range query still answers every match", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": { "a": { "$gte": 5 } }, "sort": { "_id": 1 } } } ] }, { "description": "a sort on the hashed field is by value, not by hash", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": {}, "sort": { "a": 1 } } } ] }, { "description": "equality across numeric types", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "find", "arguments": { "filter": { "a": 5.0 }, "sort": { "_id": 1 } } } ] }, { "description": "inserting after the index exists", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "insertOne", "arguments": { "document": { "_id": 5, "a": 5 } } }, { "name": "find", "arguments": { "filter": { "a": 5 }, "sort": { "_id": 1 } } } ] }, { "description": "deleting through a hashed index", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "deleteMany", "arguments": { "filter": { "a": 5 } } }, { "name": "find", "arguments": { "filter": {}, "sort": { "_id": 1 } } } ] }, { "description": "a hashed component beside a range one", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed", "s": 1 } } }, { "name": "listIndexes", "arguments": {} } ] }, { "description": "two hashed components are refused", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed", "s": "hashed" } } } ] }, { "description": "a unique hashed index is refused", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" }, "unique": true } } ] }, { "description": "an array at the hashed path is refused, at insert time", "documents": [], "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "insertOne", "arguments": { "document": { "_id": 1, "a": [1, 2] } } } ] }, { "description": "a key direction that is neither 1, -1 nor hashed", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "bogus" } } } ] }, { "description": "a sparse hashed index", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" }, "sparse": true } }, { "name": "listIndexes", "arguments": {} } ] }, { "description": "the same hashed index twice is idempotent", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "listIndexes", "arguments": {} } ] }, { "description": "a hashed index beside an ascending one on the same field", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": 1 } } }, { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "listIndexes", "arguments": {} } ] }, { "description": "a hashed index is dropped by name", "ops": [ { "name": "createIndex", "arguments": { "keys": { "a": "hashed" } } }, { "name": "dropIndex", "arguments": { "name": "a_hashed" } }, { "name": "listIndexes", "arguments": {} } ] } ] }