我對MongoDB集合運行搜索短語。我的短語可能有一個以上的詞,例如搜索'pete smit'。因此我需要使用正則表達式來提供'起始'功能。因此,我創建了Query.Matches查詢數組,將它們添加到QueryComplete數組中,然後使用Query.And來運行它們。MongoDB 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。任何人都可以提出一個解決方法?非常感謝。
謝謝。任何想法,當MongoDB將支持$和? – Journeyman 2011-05-18 07:31:45
https://jira.mongodb.org/browse/SERVER-1089 – 2011-05-18 16:41:20