匹配猫鼬填充中的特定值

Match specific value in mongoose populate

以下是用户集合的架构:

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 数组匹配?

您在 populate

中添加条件

如果你想根据年龄填充粉丝数组,return,最多任意 5 个

.populate('fans', null, { age: { $gte: 21 }}, { limit: 5 })

您在 supporterOf 中有一个 'individual' 的引用,并且您只想填充个人数组中的相关对象? 如果这是正确的情况,则执行以下操作:

YourUserModel.findById(userId, function (err, user) {
        console.log(user)
     }).populate({
        path: 'supporterOf',
        match: {
           yourObjectOfIndividualDocument: yourMatchingIdOfIndividual
        }
     })
     .exec()

yourObjectOfIndividualDocument: yourMatchingIdOfIndividual 替换为 name: 'abcd'。 这里name是Individual document的字段,不是User document的字段。