public static IEnumerable <CreateIndexModel <AuditEntry> > GetIndexModel(IndexKeysDefinitionBuilder <AuditEntry> builder)
 {
     yield return(new CreateIndexModel <AuditEntry>(
                      builder.Combine(
                          builder.Descending(entry => entry.DateValue),
                          builder.Ascending(entry => entry.GroupId),
                          builder.Ascending(entry => entry.DataType)
                          )
                      ));
 }
        public async void Initialize()
        {
            IMongoCollection <UserDocument>           collection   = DatabaseClient.Instance.MongoDatabase.GetCollection <UserDocument>(CollectionName);
            IndexKeysDefinitionBuilder <UserDocument> indexBuilder = Builders <UserDocument> .IndexKeys;

            try
            {
                CreateIndexModel <UserDocument> indexModel = new CreateIndexModel <UserDocument>(indexBuilder.Ascending(d => d.Login),
                                                                                                 new CreateIndexOptions {
                    Name = "UserDocument_unique_Login", Unique = true
                });
                _ = await collection.Indexes.CreateOneAsync(indexModel).ConfigureAwait(false);
            }
            catch (MongoWriteConcernException)
            { }

            try
            {
                CreateIndexModel <UserDocument> indexModel = new CreateIndexModel <UserDocument>(indexBuilder.Ascending(d => d.Id),
                                                                                                 new CreateIndexOptions {
                    Name = "UserDocument_unique_Id", Unique = true
                });
                _ = await collection.Indexes.CreateOneAsync(indexModel).ConfigureAwait(false);
            }
            catch (MongoWriteConcernException)
            { }

            try
            {
                CreateIndexModel <UserDocument> indexModel = new CreateIndexModel <UserDocument>(indexBuilder.Combine(indexBuilder.Ascending(d => d.Id), indexBuilder.Ascending(d => d.PermissionGroupMembership)),
                                                                                                 new CreateIndexOptions {
                    Name = "UserDocument_unique_PermissionGroupMembership", Unique = true
                });
                _ = await collection.Indexes.CreateOneAsync(indexModel).ConfigureAwait(false);
            }
            catch (MongoWriteConcernException)
            { }
        }