匹配猫鼬填充中的特定值

时间:2019-02-28 10:59:04

标签: node.js mongodb mongoose populate 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数组匹配?

2 个答案:

答案 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 })