首页 > 解决方案 > mongoDB autcomplete 返回空数组

问题描述

我正在使用 mongodb 的示例电影数据库 ( https://docs.atlas.mongodb.com/sample-data/sample-mflix#std-label-sample-mflix ) 来试验 mongodb 的自动完成功能。搜索总是返回一个空数组。我已经建立了一个搜索索引,如下所示:

{
  "mappings": {
    "dynamic": false,
    "fields": {
      "title": [
        {
          "minGrams": 3,
          "tokenization": "edgeGram",
          "type": "autocomplete"
        }
      ]
    }
  }
}

模型和搜索查询设置如下:

// Creating the Movies model
const Movies = mongoose.model("Movies", new mongoose.Schema({}), "movies");

// Impplementing autocomplete search
app.get("/search", async (req, res) => {
  try {
    let result = await Movies.aggregate([
      {
        $search: {
          autocomplete: {
            path: "title",
            query: req.query.title,
            fuzzy: {
              maxEdits: 2,
              prefixLength: 3,
            },
          },
        },
      },
    ]);
    res.status(200).json({
      status: "success",
      results: result.length,
      data: { result },
    });
  } catch (error) {
    console.log(error);
  }
});

我正在使用邮递员运行测试查询,示例查询是:127.0.0.1:3030/search?title=black

例如,可以使用 .find() 查询模型,并返回完整的文档集合。

非常感谢任何和所有帮助。

标签: mongodbautocomplete

解决方案


推荐阅读