“不支持的功能:与mongodb 3.6兼容的文档数据库中的$text”

t30tvxxf  于 2022-11-03  发布在  Go
关注(0)|答案(3)|浏览(167)

你好,我正在使用与mongodb 3.6兼容的AWS documentDB,但是在下面的函数中出现了错误。我不知道如何解决这个问题。
索引创建

ScenarioSchema.index({
"friendlyId": "text",
"steps.text": "text",
"title": "text"
}, { name: "scenarioTextIndex" });

var createSearchFilter = function (searchOptions)
 {
    var searchTerm = searchOptions.searchText || '';
    if (searchOptions.searchCondition.toUpperCase() === 'AND') {
        searchTerm = searchTerm.split(" ").join('" "');
    }
    if (searchOptions.excludeSearchText) {
        var excludeSearchText = searchOptions.excludeSearchText.split(" ").join(' -');
        searchTerm = searchTerm.concat(" -" + excludeSearchText);
    }
    var allowedPhases = getRoleBasedPhases(searchOptions.userRoles, searchOptions.phases);
    return {$text: {$search: searchTerm}, 'phase.code': {$in: allowedPhases}};
};

我正在获取代码:303错误消息:“不支持的功能:$text”消息:“不支持的功能:$text”名称:“蒙戈错误”enter code here正常:0

eqfvzcg8

eqfvzcg81#

“MongoDB 3.6兼容性”意味着DocumentDB支持 * 一些 * MongoDB 3.6特性。有许多MongoDB特性DocumentDB没有实现,$text似乎是其中之一。
https://www.mongodb.com/atlas-vs-amazon-documentdb
要解决这个问题,请使用MongoDB。

1cosmwyk

1cosmwyk2#

Amazon DocumentDB与MongoDB 3.6和4.0 API兼容。遗憾的是,Amazon DocumentDB没有采用某些特性或操作符,$text实际上就是其中之一。您可以在以下链接中查看支持的功能列表。
https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html
我从你的代码中注意到你想在你的数据库上做一些搜索查询。如果你打算坚持使用Amazon DocumentDB,你可能想检查$regex来做你的搜索查询,你甚至可以把它和$or operator结合起来为你的查询做多个条件。
一些代码示例:

const searchPhrase = ... // Get the phrase from your search text manipulation
const condition = {
  $or: [
    { friendlyId: { $regex: searchPhrase, $options: "i" } },
    { text: { $regex: searchPhrase, $options: "i" } },
    { title: { $regex: searchPhrase, $options: "i" } },
  ]
};
const searchResults = await ScenarioSchema.find(condition);
sr4lhrrt

sr4lhrrt3#

未来Google搜索者!Amazon在您的DocumentDB示例上编写了这篇关于running text search的文章。
基本上,将ElasticSearch与DocumentDB集成。

相关问题