Mongoose,过滤全文搜索的结果

时间:2016-04-10 16:31:45

标签: node.js mongodb mongoose full-text-search

我曾经有一个Comment架构,其中我保留了authorcommentcommentID字段,基本上是每个评论的重复作者姓名给他。所以我重构如下。现在我有一个Author模型,其中包含一系列评论,但确实感觉更好,但我已经失去了通过全文搜索查询commentBody的能力。在我使用该术语查询Comment模型之前,它返回了我符合条件的每条评论。

const authorSchema = new mongoose.Schema({
  name: { type: String, unique: true, index: true },
  comments: [{
    commentID: { type: String, unique: true },
    commentBody: { type: String, index: 'text' },
    created_at: { type: Date, default: Date.now }
  }],
  ...
  // other unrelated fields
});

但现在我正试图直接查询Author模型:

Author.find({ $text: { $search: `${req.params.term}` } })
  .select('name comments')
  .exec((error, result) => {
    res.json(result);
  });
如果至少有一条评论符合搜索条件,那么Author的每场比赛都会得到正确回报。我花了几个小时阅读Mongoose和MongoDB的文档,但我仍然无法编写一个正确的查询,只会在comments数组中返回匹配的匹配的注释,即对于术语lorem,我想要以下回复:

{
  name: "Jane",
  comments: [
    {
      commentBody: "Lorem dolor",
      commentID: "42",
    },
    {
      commentBody: "Lorem lipsum.",
      commentID: "43",
    },
  ]
},
{
  name: "Doe",
  comments: [
    {
      commentBody: "Dolor lorem",
      commentID: "44",
    },
    {
      commentBody: "Lipsum lorem.",
      commentID: "45",
    },
  ]
}

0 个答案:

没有答案