/** * Create an index with a key of `{<key>: 1}` and a `name` of <key>. */ Status createIndex(OperationContext* opCtx, NamespaceString collNs, std::string key) { Collection* coll = nullptr; BSONObjBuilder builder; { BSONObjBuilder keyObj; builder.append("key", keyObj.append(key, 1).done()); } BSONObj spec = builder.append("name", key).append("ns", collNs.ns()).append("v", 2).done(); auto descriptor = stdx::make_unique<IndexDescriptor>(coll, IndexNames::findPluginName(spec), spec); DatabaseCatalogEntry* dbce = _storageEngine->getDatabaseCatalogEntry(opCtx, collNs.db()); CollectionCatalogEntry* cce = dbce->getCollectionCatalogEntry(collNs.ns()); auto ret = cce->prepareForIndexBuild(opCtx, descriptor.get()); if (!ret.isOK()) { return ret; } cce->indexBuildSuccess(opCtx, key); return Status::OK(); }