我想创建一个复合索引,其中一个键应按升序排序,第二个键按降序排序。
我该如何做到这一点?
我有一个包含用户选择的属性名称的字符串。
collection.EnsureIndex(IndexKeys.Descending(selectedProperties[0]),
IndexKeys.Ascending(selectedProperties[1])),
IndexOptions.......
无法正常工作
我想创建一个复合索引,其中一个键应按升序排序,第二个键按降序排序。
我该如何做到这一点?
我有一个包含用户选择的属性名称的字符串。
collection.EnsureIndex(IndexKeys.Descending(selectedProperties[0]),
IndexKeys.Ascending(selectedProperties[1])),
IndexOptions.......
无法正常工作
await collection.Indexes.CreateOneAsync(
Builders<Hamster>.IndexKeys.Ascending(_ => _.Name).Descending(_ => _.Age),
new CreateIndexOptions { Background = true });
并且同步进行:
collection.Indexes.CreateOne(
Builders<Hamster>.IndexKeys.Ascending(_ => _.Name).Descending(_ => _.Age),
new CreateIndexOptions { Sparse = true });
以下是一种方式:
var keys = new IndexKeysBuilder();
keys.Ascending(keyName1);
keys.Descending(keyName2);
var options = new IndexOptionsBuilder();
options.SetSparse(true);
options.SetUnique(false);
collection.EnsureIndex(keys, options);
EnsureIndex
已过时,应使用 CreateIndex
。还有一些支持流畅用法的静态构建器类:IndexKeys
和 IndexOptions
。
因此,最干净的选项是:
collection.CreateIndex(
IndexKeys.Ascending(keyName1).Descending(keyName2),
IndexOptions.SetSparse(true).SetUnique(false));
针对通用的类型安全选项:
collection.CreateIndex(
IndexKeys<Document>.Ascending(d => d.Property1).Descending(d => d.Property2),
IndexOptions.SetSparse(true).SetUnique(false));
使用CreateIndex创建索引
var indexModel = new CreateIndexModel<T>(keys.Ascending(x => x.Property1).Ascending(x=>x.Property2));
collection.Indexes.CreateOne(indexModel);