猫鼬 - $ text搜索在$或条件内打破

时间:2016-05-03 14:22:48

标签: javascript node.js mongodb mongoose

我尝试使用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不允许的事情?

0 个答案:

没有答案