我尝试使用Mongoose搜索文档,如果用户在请求中发送了一些文本,我会在查询中创建一个OR条件,说明'看看此文本是否与字段X或Y匹配&# 39;,用简单的英语:
var query = {
date: { $gte: start_date, $lt: end_date},
author: req._user._id,
link: { $eq: link},
};
将始终搜索上述字段。然后我检查是否存在文本,如果是,我想搜索文档$ text index以查看是否与搜索文本匹配或者我想查看搜索文本是否包含在文档'标记&#39中;阵列。此OR条件会引发$ text索引错误。
if (searchText.length) {
query["$or"] = [
{
"$text": { "$search": searchText}
},
{
"tags": { "$in": [searchText]}
}
];
}
我收到mongodb错误,例如' MongoError:错误处理查询'和'没有查询解决方案'。
我已将其缩小到$ text索引。如果我在OR条件中替换$ text索引字段并将其替换为简单的字段匹配,则一切正常:
query["$or"] = [
{
"title": "Foo" // Replaced $text search with this and it works.
},
{
"tags": { "$in": [searchText]}
}
];
我做了Mongoose不允许的事情,或MongoDB不允许的事情?