2016-12-28 3 views
4

Мне нужно искать содержимое во всех документах, в частности, коллекции mongodb в .net mvc. Я попытался использовать оболочку mongodb, создав индекс успешно, как здесь.Полный текстовый поиск в mongodb in .net

db.collection_name.createIndex({ subject: "text" }) 

db.collection_name.find({ $text: { $search: "search_word" } }) 

Он отлично работает. но когда я помещаю его в .net, это дает мне ошибку. Я искал ее и получил следующее решение для индексирования.

collection.EnsureIndex(new IndexKeysBuilder().Ascending("subject")); 

сейчас как я могу запустить этот запрос db.collection_name.find({ $text: { $search: "coffee" } }).

Я стараюсь .net как нижеследующий способ.

collection.CreateIndex("subject":"text"); 

var query = collection.Find({ $text: { $search: "coffe" }}); 

, но я получаю сообщение об ошибке на первую линию «представляет текст в виде серии юникода .... синтаксическую ошибку»

ошибка второй линии «Там не аргумент, учитывая, что соответствует требуемым формальным параметрам» И msgstr "неожиданный символ $".

любое предложение будет оценено.

+0

Вам необходимо показать .N ET и когда вы говорите, что это «дает ошибку» - какая ошибка? –

+0

var collection = Database.GetCollection ("articles"); collection.EnsureIndex (новый IndexKeysBuilder(). Восходящий ("subject")); var query = collection.find ({$ text: {$ search: "coffee"}}); –

+0

Ошибка в последней строке Я думаю, что мы не можем напрямую писать запрос, когда пишем в оболочке mongodb. поэтому я должен получить решение для .net для полнотекстового поиска в mongodb –

ответ

0

я мог бы создать текстовые индексы с помощью следующей команды:

collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject)); 

И чем я мог бы запросить индексировать этот путь:

collection.Find(Builders<searchFileByAuthor>.Filter.Text("coffe")).ToList(); 

searchFileByAuthor только мой фальшивый класс с предметной области:

public class searchFileByAuthor 
{ 
    public int Id { get; set; } 
    public string subject { get; set; } 
} 
+0

Я пробовал, но получал ошибку. «Аргумент 1: невозможно преобразовать из« MongoDb.Driver.Filter.Definition »... в« MongoDb.Driver.IMongoQuery ». –

+0

что именно commant вы пытаетесь выполнить? Я обновил свой ответ. –

+0

спасибо. Я хочу просто выполнить поиск в файле или документах, и этот запрос я хочу выполнить .. collection.CreateIndex (subject: "text"); var query = collection.Find ({$ text: {$ search: "coffe"}}); –

0
public List<T> FindSearch<T>(string collectionName, string searchWord) { 
    IMongoQuery query = Query.Text(searchWord); 
    List<T> find = getCollection<T>(collectionName).Find(query).ToList(); 
    return find; 
} 
Смежные вопросы