如何在 Mongoose 中搜索填充数组 [包含 ref 的数组]
Posted
技术标签:
【中文标题】如何在 Mongoose 中搜索填充数组 [包含 ref 的数组]【英文标题】:How to search in Mongoose populate array [array containing ref] 【发布时间】:2020-11-03 12:20:34 【问题描述】:我是 MEAN 堆栈开发的新手。请任何人告诉如何在猫鼬填充数组中搜索。该数组包含参考。
讨论模式:
const discussionSchema = new Schema(
user_id:
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
,
subject_title:
type: String,
required: true
,
keywords: [
type: Schema.ObjectId,
ref: 'Keyword',
default: null
,
timestamps: true
)
关键字架构:
const keywordSchema = new Schema(
keyword:
type: String,
required: true,
unique: true,
,
timestamps: true
)
如何在包含关键字模型的ref ID的关键字数组中搜索关键字字符串。
【问题讨论】:
【参考方案1】:使用猫鼬种群的替代方法
await DiscussionModel.find('...')
.populate( path: 'user_id', select: '...' )
.populate(
path: 'keywords',
match: 'keyword': /regExp/ or 'exact match'
).lean().exec();
【讨论】:
【参考方案2】:您可以使用猫鼬聚合和$lookup
运算符来实现这一点。 $lookup
用于加入 populate
等集合。
您必须先加入讨论和关键字,然后使用$match
运算符搜索关键字。
假设matchingKeyword
变量是您的查询。
let result = await DiscussionModel.aggregate([
$lookup:
from: 'keywords',
localField: 'keywords',
foreignField: '_id',
as: 'keywords'
,
$match:
'keywords.keyword': matchingKeyword
]);
【讨论】:
以上是关于如何在 Mongoose 中搜索填充数组 [包含 ref 的数组]的主要内容,如果未能解决你的问题,请参考以下文章