/* Copyright 2010-present MongoDB Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using MongoDB.Bson; namespace MongoDB.Driver { /// /// Options for creating an index. /// public class CreateIndexOptions { // fields private bool? _background; private int? _bits; private double? _bucketSize; private Collation _collation; private string _defaultLanguage; private TimeSpan? _expireAfter; private string _languageOverride; private double? _max; private double? _min; private string _name; private bool? _sparse; private int? _sphereIndexVersion; private BsonDocument _storageEngine; private int? _textIndexVersion; private bool? _unique; private int? _version; private BsonDocument _weights; // properties /// /// Gets or sets a value indicating whether to create the index in the background. /// public bool? Background { get { return _background; } set { _background = value; } } /// /// Gets or sets the precision, in bits, used with geohash indexes. /// public int? Bits { get { return _bits; } set { _bits = value; } } /// /// Gets or sets the size of a geohash bucket. /// public double? BucketSize { get { return _bucketSize; } set { _bucketSize = value; } } /// /// Gets or sets the collation. /// public Collation Collation { get { return _collation; } set { _collation = value; } } /// /// Gets or sets the default language. /// public string DefaultLanguage { get { return _defaultLanguage; } set { _defaultLanguage = value; } } /// /// Gets or sets when documents expire (used with TTL indexes). /// public TimeSpan? ExpireAfter { get { return _expireAfter; } set { _expireAfter = value; } } /// /// Gets or sets the language override. /// public string LanguageOverride { get { return _languageOverride; } set { _languageOverride = value; } } /// /// Gets or sets the max value for 2d indexes. /// public double? Max { get { return _max; } set { _max = value; } } /// /// Gets or sets the min value for 2d indexes. /// public double? Min { get { return _min; } set { _min = value; } } /// /// Gets or sets the index name. /// public string Name { get { return _name; } set { _name = value; } } /// /// Gets or sets a value indicating whether the index is a sparse index. /// public bool? Sparse { get { return _sparse; } set { _sparse = value; } } /// /// Gets or sets the index version for 2dsphere indexes. /// public int? SphereIndexVersion { get { return _sphereIndexVersion; } set { _sphereIndexVersion = value; } } /// /// Gets or sets the storage engine options. /// public BsonDocument StorageEngine { get { return _storageEngine; } set { _storageEngine = value; } } /// /// Gets or sets the index version for text indexes. /// public int? TextIndexVersion { get { return _textIndexVersion; } set { _textIndexVersion = value; } } /// /// Gets or sets a value indicating whether the index is a unique index. /// public bool? Unique { get { return _unique; } set { _unique = value; } } /// /// Gets or sets the version of the index. /// public int? Version { get { return _version; } set { _version = value; } } /// /// Gets or sets the weights for text indexes. /// public BsonDocument Weights { get { return _weights; } set { _weights = value; } } } /// /// Options for creating an index. /// /// The type of the document. public class CreateIndexOptions : CreateIndexOptions { #region static // internal static methods internal static CreateIndexOptions CoercedFrom(CreateIndexOptions options) { if (options == null) { return null; } if (options.GetType() == typeof(CreateIndexOptions)) { return new CreateIndexOptions { Background = options.Background, Bits = options.Bits, BucketSize = options.BucketSize, Collation = options.Collation, DefaultLanguage = options.DefaultLanguage, ExpireAfter = options.ExpireAfter, LanguageOverride = options.LanguageOverride, Max = options.Max, Min = options.Min, Name = options.Name, Sparse = options.Sparse, SphereIndexVersion = options.SphereIndexVersion, StorageEngine = options.StorageEngine, TextIndexVersion = options.TextIndexVersion, Unique = options.Unique, Version = options.Version, Weights = options.Weights }; } return (CreateIndexOptions)options; } #endregion // private fields private FilterDefinition _partialFilterExpression; // public properties /// /// Gets or sets the partial filter expression. /// public FilterDefinition PartialFilterExpression { get { return _partialFilterExpression; } set { _partialFilterExpression = value; } } } }