public async Task <IReadOnlyList <IConfigurationEntry> > GetEntries(string component, ConfigurationPath pathPrefix, bool forPages = false, bool recursive = true) { var filterBuilder = new FilterDefinitionBuilder <MongoDbConfigurationDocument>(); if (string.IsNullOrWhiteSpace(component)) { component = "root"; } var filter = filterBuilder.Eq(a => a.Component, component); if (!ConfigurationPath.IsNullOrEmpty(pathPrefix)) { filter = recursive ? filterBuilder.Regex(a => a.Path, new Regex(pathPrefix.ToString(asPrefix: true))) : filterBuilder.Eq(a => a.Path, pathPrefix.ToString()); } if (forPages) { filter = filter & filterBuilder.Eq(a => a.VisibleToPages, true); } var results = await settingsCollectionData.FindAsync(filter); var records = await results.ToListAsync(); return(records.Select(doc => RebuildConfigurationEntry(doc)).ToList()); }