【发布时间】:2020-12-08 13:08:09
【问题描述】:
我正在尝试构建一个用于搜索作业的 API
前端输入:带有字符串的单个字段keyword
API 响应:返回与以下任何字段匹配的作业列表
- 技能
- 位置
- 公司
架构
1.工作模式
title: {
type: String,
required: true,
},
location: {
type: mongoose.Schema.Types.ObjectId,
ref: 'location',
},
skills:[{
type: mongoose.Schema.Types.ObjectId,
ref: 'Skill'
}],
company: {
type: mongoose.Schema.Types.ObjectId,
ref: 'company',
},
如您所见,技能、位置和公司被映射到另一个集合中,并且前端没有对关键字进行分隔我不确定我可以用哪种方式编写有效的搜索查询
现在的方法是
- 根据技能名称查找 Skill_id 并获取所有具有所需技能的工作
location 和公司也一样
但我不确定这是正确的方法,有人可以建议这样做的正确方法
【问题讨论】:
-
我想我会稍微调整一下你的方法。我会首先得到与搜索条件匹配的
skill_ids、location_ids 和company_ids。然后我会使用这些 id 来创建 1 个关于作业的查询。这样做的好处是只获取一次作业,而不必担心在多个查询中重复作业。
标签: mongodb mongoose aggregation-framework