在MongoDB 2.6.0中使用C#驱动程序的v1.9.0(编写本文时为最新版本)
目前通过C#驱动程序在集合上创建文本索引的最佳方法是什么?
据我所知,MongoCollection.CreateIndex
无法实现?因此,目前正在使用MongoDatabase.Eval创建它,如下所示:
Database.Eval(new EvalArgs { Code = "function(){db.dummycollection.ensureIndex({\"$**\" : \"text\"},{name:\"TextIndex\"});}"
我错过了什么/有更好的方法吗?
答案 0 :(得分:4)
刚刚验证以下内容适用于1.9.0 C#驱动程序和MongoDB 2.6.0-rc2:
MongoCollection.CreateIndex(new IndexKeysDocument("Markdown", "text"));
(这也适用于较旧的司机)
修改
djch的回答显示了使用1.9驱动程序的更好方法,因为它也可以使用stronly-typed,例如:
MongoCollection.CreateIndex(IndexKeys<MyClass>.Text(p => p.Markdown));
答案 1 :(得分:2)
这应该有效:
collection.EnsureIndex(IndexKeys.Text("a", "b").Ascending("c"), IndexOptions.SetTextLanguageOverride("idioma").SetName("custom").SetTextDefaultLanguage("spanish"));
https://jira.mongodb.org/browse/CSHARP-874
https://github.com/mongodb/mongo-csharp-driver/commit/1e7db3bedb3bee1b0ccecdb5f8ff39854526213a
答案 2 :(得分:0)
在c#中创建索引的最简单方法是使用驱动程序包装器库MongoDB.Entities。这是创建文本索引的示例:
DB.Index<Author>()
.Key(a => a.Name, Type.Text)
.Key(a => a.Surname, Type.Text)
.Create();
要进行全文搜索,只需执行以下操作:
DB.SearchText<Author>("search term");
没有比这更简单的了:-)