Status Database::createView(OperationContext* txn, StringData ns, const CollectionOptions& options) { invariant(txn->lockState()->isDbLockedForMode(name(), MODE_X)); invariant(options.isView()); NamespaceString nss(ns); NamespaceString viewOnNss(nss.db(), options.viewOn); _checkCanCreateCollection(nss, options); audit::logCreateCollection(&cc(), ns); if (nss.isOplog()) return Status(ErrorCodes::InvalidNamespace, str::stream() << "invalid namespace name for a view: " + nss.toString()); return _views.createView(txn, nss, viewOnNss, BSONArray(options.pipeline), options.collation); }