createIndex method
Implementation
Future<Map<String, dynamic>> createIndex(String collectionName,
{String? key,
Map<String, dynamic>? keys,
bool? unique,
bool? sparse,
bool? background,
bool? dropDups,
Map<String, dynamic>? partialFilterExpression,
String? name}) {
if (masterConnection.serverCapabilities.supportsOpMsg) {
return collection(collectionName).createIndex(
key: key,
keys: keys,
unique: unique,
sparse: sparse,
background: background,
dropDups: dropDups,
partialFilterExpression: partialFilterExpression,
name: name);
}
return Future.sync(() async {
var selector = <String, dynamic>{};
selector['ns'] = '$databaseName.$collectionName';
keys = _setKeys(key, keys);
selector['key'] = keys;
if (unique == true) {
selector['unique'] = true;
} else {
selector['unique'] = false;
}
if (sparse == true) {
selector['sparse'] = true;
}
if (background == true) {
selector['background'] = true;
}
if (dropDups == true) {
selector['dropDups'] = true;
}
if (partialFilterExpression != null) {
selector['partialFilterExpression'] = partialFilterExpression;
}
name ??= _createIndexName(keys!);
selector['name'] = name;
var insertMessage = MongoInsertMessage(
'$databaseName.${DbCommand.SYSTEM_INDEX_COLLECTION}', [selector]);
executeMessage(insertMessage, _writeConcern);
return getLastError();
});
}