首页 > 解决方案 > 填充猫鼬后如何执行全文搜索?

问题描述

我正在构建一个类似克隆的 Twitter,并且我正在尝试构建搜索系统来对所有推文数据执行一般文本查找。每条推文都存储了对作者的引用,因此我必须先调用 populate 才能使用 .find()

我试过这个无济于事:

const searchTerm = req.query.query;

Tweet.find()
  .limit(10)
  .populate("author")
  .find( { $text: { $search: `${searchTerm}` } })
  .then(data => {
    res.json({ tweets: data });
  })
  .catch((err) => console.log(err));

这是Tweet模型

const TweetSchema = new Schema({
  content: {
    type: String,
    required: true,
  },
  category: {
    type: String,
    required: false,
  },
  comments: [Comment.schema],
  author: { type: Schema.Types.ObjectId, ref: "user", required: true },
  replies: {
    type: Number,
    default: 0,
  },
  likes: {
    type: Number,
    default: 0,
  },
  date: {
    type: Date,
    default: Date.now,
  },
});

TweetSchema.index({ "$**": "text" });

module.exports = Tweet = mongoose.model("tweet", TweetSchema);

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读