ensureIndex method

Future ensureIndex(
  1. String collectionName, {
  2. String? key,
  3. Map<String, dynamic>? keys,
  4. bool? unique,
  5. bool? sparse,
  6. bool? background,
  7. bool? dropDups,
  8. Map<String, dynamic>? partialFilterExpression,
  9. String? name,
})

Implementation

Future ensureIndex(String collectionName,
    {String? key,
    Map<String, dynamic>? keys,
    bool? unique,
    bool? sparse,
    bool? background,
    bool? dropDups,
    Map<String, dynamic>? partialFilterExpression,
    String? name}) async {
  keys = _setKeys(key, keys);
  var indexInfos = await collection(collectionName).getIndexes();

  name ??= _createIndexName(keys);

  if (indexInfos.any((info) => info['name'] == name) ||
      // For compatibility reasons, old indexes where created with
      // a leading underscore
      indexInfos.any((info) => info['name'] == '_$name')) {
    return {'ok': 1.0, 'result': 'index preexists'};
  }

  var createdIndex = await createIndex(collectionName,
      keys: keys,
      unique: unique,
      sparse: sparse,
      background: background,
      dropDups: dropDups,
      partialFilterExpression: partialFilterExpression,
      name: name);

  return createdIndex;
}