我正在针对 MongoDB 集合运行搜索短语。我的短语中可能包含多个词,例如搜索“pete smit”。因此,我需要使用正则表达式来提供“开始于”功能。因此,我创建了一个 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 我得到一个错误说明:
Query.And does not support combining equality comparisons with other operators (field: 'companyname')
如果我使用 Query.Or 可以正常工作,但如果我使用 Query.And 则无法正常工作。任何人都可以提出解决方法吗?非常感谢。