Я использую поисковую фразу в коллекции MongoDB. Моя фраза может содержать более одного термина, например искать «Пит Смит». Поэтому мне нужно использовать регулярные выражения, чтобы обеспечить функцию «начинается с». Поэтому я создаю массив запросов Query.Matches, добавляю их в массив QueryComplete, а затем использую Query.And для их запуска.
Код выглядит следующим образом:
// searchTerm will be something like 'pete smit'
string[] terms = searchTerm.Split(' ');
MongoDB.Driver.Builders.QueryComplete[] qca;
qca = new MongoDB.Driver.Builders.QueryComplete[terms.Length];
for (int i = 0; i < terms.Length; i++)
{
regex = "/(\\b" + terms[i] + ")+/i"; // Good, but only single term (\b is start of word)
qca[i] = MongoDB.Driver.Builders.Query.Matches("companyname", regex);
}
//MongoDB.Driver.Builders.QueryComplete qry = MongoDB.Driver.Builders.Query.Or(qca); // This works
MongoDB.Driver.Builders.QueryComplete qry = MongoDB.Driver.Builders.Query.And(qca); // This fails
При выполнении запроса. И я получаю сообщение об ошибке:
Query.And does not support combining equality comparisons with other operators (field: 'companyname')
Хорошо работает, если я использую Query.Or, но не работает, если я использую Query.And. Кто-нибудь может предложить обходной путь? Большое спасибо.