以下是用户集合的架构:
const Mongoose = require('mongoose')
const Schema = Mongoose.Schema
const userSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String
},
supporterOf: [{
type: Schema.Types.ObjectId,
ref: 'individual',
required: false
}],
})
module.exports = Mongoose.model('user', userSchema);
我想填充“ supporterOf”,它是个人的集合(参考:个人)。 'supporterOf'包含一个ObjectId数组。 我遇到了将特定的objectId与该ObjectId数组匹配的问题。 谁能建议我如何在填充函数中将特定的ObjectId与ObjectId数组匹配?
答案 0 :(得分:1)
您在supporterOf中具有“个人”的引用,并且您想仅填充个人数组中的相关对象? 如果是这种情况,请执行以下操作:
YourUserModel.findById(userId, function (err, user) {
console.log(user)
}).populate({
path: 'supporterOf',
match: {
yourObjectOfIndividualDocument: yourMatchingIdOfIndividual
}
})
.exec()
将yourObjectOfIndividualDocument: yourMatchingIdOfIndividual
替换为name: 'abcd'
。
name
此处是“个人文档”而不是“用户文档”的字段。
答案 1 :(得分:0)
您在populate
中添加条件如果您想根据粉丝的年龄填充粉丝数组,并最多返回其中的任意5位
.populate('fans', null, { age: { $gte: 21 }}, { limit: 5 })