【问题标题】:MongoDB C# Driver -- Create IndexMongoDB C# 驱动程序——创建索引
【发布时间】:2015-09-01 06:24:32
【问题描述】:

我正在使用MongoDB C# driver 创建索引

当我的应用启动时,它会创建如下索引

await collection.Indexes.CreateOneAsync(new BsonDocument("code", 1), new CreateIndexOptions() { Unique = true, Sparse = true });

我的问题是:如果索引已经存在,索引将不会被重新创建/索引,对吗?

【问题讨论】:

  • 不应该创建一个新的,只要一切都是一样的...但是它已经真的很容易尝试它,然后创建几次索引列出他们?

标签: c# .net mongodb-.net-driver mongodb-csharp-2.0


【解决方案1】:

是的。

只要参数不变(例如 "code" 变为 "Code"Sparse 变为 false),就不会重新创建索引并且操作将是空操作。

【讨论】:

  • 那么当使用 DI 容器和存储库模式创建 Web api 时,创建索引的最佳时间是什么时候?也许在存储库的构造函数中?但是由于存储库具有 http 请求的生命周期,它可以为每个传入请求发送 CreateIndex 命令。当然,在 99% 的情况下它是无操作的,但仍然 - 这不是矫枉过正吗?
  • @lukpep 该 Web api 托管在哪里。在整个服务生命周期中通常有一些东西是活着的。只需在服务器启动一次时调用 createIndex。下次启动服务器时,它将是空操作。
  • 我正在使用 ms azure。我正在考虑在我的 mongo 模块的初始配置中执行此操作(其中注册了约定等),但我不喜欢每次创建新的域存储库时都必须记住去 mongo 配置模块并添加索引。以某种方式在存储库中注册所需的索引真的很方便。也许 autofac 可以从实现一些标记接口 IMongoRepository 的程序集中获取所有类,并在初始启动时查找要注册的静态 idex 数组?
猜你喜欢
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多