我曾经有一个Comment
架构,其中我保留了author
,comment
和commentID
字段,基本上是每个评论的重复作者姓名给他。所以我重构如下。现在我有一个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",
},
]
}