Я пытаюсь создать запрос mongodb в c #, который позволит мне искать в одном поле несколько ключевых слов.Я могу найти ответы только для одного ключевого слова.Я использую MongoDB.Driver v2.6.1
Моя модель:
public class RBpartsImages
{
[BsonId]
public ObjectId ID { get; set; }
public String PartNum { get; set; }
public string Name { get; set; }
public String ImageFilename { get; set; }
public ImgSize ImageSize { get; set; }
}
Это работает, но только с одним ключевым словом:
String keywords = "beam thin"; // produces no results,
// String keywords="beam"; // gives results
var filter = Builders<RBpartsImages>.Filter.Regex("Name", new BsonRegularExpression(keywords, @"(?i)[^\s,;]+"));
List<RBpartsImages> query = imagesCollection.Find(filter).ToList();
Debug.WriteLine(String.Format("GetRBparts: {0}", query.ToJson(new JsonWriterSettings { Indent = true })));
// the output is paged
rbParts = query.Skip(page * pageSize).Take(pageSize).ToList();
, и это дает«Неподдерживаемый фильтр: Любой (ошибка значения):
String keywords = "beam thin";
List<String> kWords = Regex.Split(keywords, @"[\s,;]+").ToList();
Debug.WriteLine(String.Format("GetRBparts: {0}", kWords.ToJson(new JsonWriterSettings { Indent = true })));
List<RBpartsImages> query = (from rbi in imagesCollection.AsQueryable()
where (kWords.Any(r => rbi.Name.ToLower().Contains(r)))
select rbi).ToList();
Я ищу способ фильтрации возвращаемого списка по ключевым словам, любая помощь будет высоко оценена, спасибо.