我現在用的是MongoDB C# driver當我的應用程序啓動時創建一個索引MongoDB的C#驅動程序 - 創建索引
,它創建的指標如下
await collection.Indexes.CreateOneAsync(new BsonDocument("code", 1), new CreateIndexOptions() { Unique = true, Sparse = true });
我的問題是這樣的:如果該指數已經存在,索引不會再被重新創建/索引,對嗎?
我現在用的是MongoDB C# driver當我的應用程序啓動時創建一個索引MongoDB的C#驅動程序 - 創建索引
,它創建的指標如下
await collection.Indexes.CreateOneAsync(new BsonDocument("code", 1), new CreateIndexOptions() { Unique = true, Sparse = true });
我的問題是這樣的:如果該指數已經存在,索引不會再被重新創建/索引,對嗎?
是的。
只要參數不改變(例如"code"
變得"Code"
或Sparse
變得false
)的指數將不會重新創建和操作將是一個空操作。
因此,當使用DI容器和存儲庫模式創建web api時,索引創建的最佳時機是什麼? 也許在倉庫的構造函數中?但是,由於存儲庫具有HTTP請求的生命週期,因此需要爲每個傳入請求發送CreateIndex命令。當然,在99%的情況下它將無法使用,但仍然 - 這不是一種矯枉過正的行爲嗎? – lukpep
@lukpep在哪裏是web api託管。在整個使用壽命期間通常都會有活動。只需在服務器啓動一次時調用createIndex。下一次啓動服務器時,它將成爲禁用狀態。 – i3arnon
我正在使用ms azure。我正在考慮在我的mongo模塊的初始配置中進行配置(約定註冊等),但我不喜歡每次創建新的域存儲庫時都必須記住去mongo配置模塊並添加索引。我會很方便地以某種方式在倉庫中註冊所需的索引。也許autofac可以從程序集中獲取所有實現某個標記接口IMongoRepository的類,並查找在初始啓動時註冊的靜態數組idexes? – lukpep
只要一切都是一樣的,不應該創建一個新的,但它本來是**很容易試試,多次創建索引然後列出它們? – Jcl