mongodb - 使用猫鼬的 Atlas 文本搜索返回一个空数组
问题描述
我正在尝试创建一个自动完成的表单字段。我已经在 Atlas 中正确设置了搜索索引。我可以通过在 MongoDB 游乐场(VSCode 扩展)中运行以下命令来测试它:
use("Development");
db;
db.PlcMarketCaps.aggregate([
{
$search: {
index: "default",
autocomplete: {
query: "SCOT",
path: "companyName",
fuzzy: { maxEdits: 1 }
}
}
}
]);
这按预期工作。但是,当我在使用 mongoose 的项目中合并相同的命令时,它只会返回一个空数组。这是我正在使用的代码:
export async function searchPlcCompanies(query: string): Promise<string[] | undefined> {
return PlcMarketCap.aggregate()
.search({
index: "default",
autocomplete: {
query: `${query}`,
path: "companyName",
fuzzy: { maxEdits: 1 }
}
})
.then((response) => {
console.log(response);
return response;
})
.catch((error: Error) => {
throw error;
});
}
我也试过:
export async function searchPlcCompanies(query: string): Promise<string[] | undefined> {
return PlcMarketCap.aggregate()
$search: {
autocomplete: {
query: `${query}`,
path: "companyName",
fuzzy: {
maxEdits: 2,
prefixLength: 3
}
}
}
}
调试器向我显示该函数接收到正确的查询字符串。这和 MongoDB 游乐场命令之间的唯一区别是它首先通过 mongoose。有谁知道我做错了什么?
解决方案
推荐阅读
- python - 在现有的 Excel 工作表上保存 Pandas 系列
- javascript - Node-Red global.get("camera_url") 引用错误:未定义全局
- mysql - 无法通过 Workbench 连接到 RDS MySQL 数据库
- batch-file - 从另一个 .bat 文件中写入 %xxx% 内容的 .bat 文件
- codeigniter - codeigniter 中的路由问题
- jquery - Knockout js:是否可以从 HTML 标记本身获取附加到 HTML 元素的绑定对象
- field - 使用relationExtendManageWidget() 将字段动态添加到关系管理器
- groovy - 如何从 Groovy 中的对象获取嵌套属性值?
- zk - 通过控制器类更新列表框时出现空指针异常
- html - 验证文件大小后如何更改标签?