63 lines
2.5 KiB
JavaScript
63 lines
2.5 KiB
JavaScript
// Test creation of compound indexes with special index types.
|
|
|
|
var coll = db.index_plugins;
|
|
coll.drop();
|
|
|
|
// Test building special index types on a single field.
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "hashed"}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: "2d"}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: "2dsphere"}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: "text"}));
|
|
coll.dropIndexes();
|
|
|
|
assert.commandFailed(coll.ensureIndex({a: "geoHaystack"}, {bucketSize: 1})); // compound required
|
|
|
|
// Test compounding special index types with an ascending index.
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "2dsphere", b: 1}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: 1, b: "2dsphere"}));
|
|
coll.dropIndexes();
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "text", b: 1}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: 1, b: "text"}));
|
|
coll.dropIndexes();
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "2d", b: 1}));
|
|
coll.dropIndexes();
|
|
assert.commandFailed(coll.ensureIndex({a: 1, b: "2d"})); // unsupported
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "geoHaystack", b: 1}, {bucketSize: 1}));
|
|
coll.dropIndexes();
|
|
assert.commandFailed(coll.ensureIndex({a: 1, b: "geoHaystack"}, {bucketSize: 1})); // unsupported
|
|
|
|
assert.commandFailed(coll.ensureIndex({a: "hashed", b: 1})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: 1, b: "hashed"})); // unsupported
|
|
|
|
// Test compound index where multiple fields have same special index type.
|
|
|
|
assert.commandWorked(coll.ensureIndex({a: "2dsphere", b: "2dsphere"}));
|
|
coll.dropIndexes();
|
|
assert.commandWorked(coll.ensureIndex({a: "text", b: "text"}));
|
|
coll.dropIndexes();
|
|
|
|
assert.commandFailed(coll.ensureIndex({a: "2d", b: "2d"})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: "geoHaystack", b: "geoHaystack"}, // unsupported
|
|
{bucketSize: 1}));
|
|
|
|
assert.commandFailed(coll.ensureIndex({a: "hashed", b: "hashed"})); // unsupported
|
|
|
|
// Test compounding different special index types with each other.
|
|
|
|
assert.commandFailed(coll.ensureIndex({a: "2d", b: "hashed"})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: "hashed", b: "2dsphere"})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: "2dsphere", b: "text"})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: "text", b: "geoHaystack"})); // unsupported
|
|
assert.commandFailed(coll.ensureIndex({a: "geoHaystack", b: "2d"}, // unsupported
|
|
{bucketSize: 1}));
|