MongoDB Mongoose - 文本搜索中缺少默认字段

时间:2015-06-21 21:05:21

标签: node.js mongodb mongoose

我的产品架构看起来像这样:

var ProductSchema = new mongoose.Schema({

  name: { type: String, required: true },
  description: String,

  comments: [{ type: Number, ref: 'Comment' }],
  comment_count: { type: Number, default: 0 },
});

文本搜索的索引名称和描述:

ProductSchema.index({ name: 'text', description: 'text' });

我像这样使用文本搜索:

this.find(
  { $text: { $search: keywords } },
  { score: { $meta: "textScore" } }
)
.sort({ score: { $meta: "textScore" } })
.populate({
  path: 'comments',
  select: 'creator body date_created',
  options: {
    sort: { date_created: -1 }
  }
})
.exec( function(products) {
  ... //-> snipped for brevity
});

尽管搜索工作正常,但返回数据集上的某些项目没有comment_count字段,该字段应该默认为0。 我认为问题是当我尝试返回文本搜索分数时,因为我删除了这一行:{ score: { $meta: "textScore" } }。列表中的所有项目都有一个comment_count字段。

我希望两者兼顾,因为通过文本分数对数据进行排序很有意义。

注意: 我想请注意,我在搜索查询期间调用了this,因为我将其作为Product的静态方法。

我还要注意,只要添加或删除评论并且在搜索查询期间未填充评论,comment_count就会更改。但不确定这些信息是否有用,如果相关的话。

0 个答案:

没有答案