Соответствует определенному значению в мангусте - PullRequest
0 голосов
/ 28 февраля 2019

Ниже приведена схема пользовательской коллекции:

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 с массивом ObjectIds в заполнить функцию?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

У вас есть ссылка на "Individual" в SupporterOf, и вы хотите заполнить только соответствующий объект из массива лиц?Если это правильный случай, выполните следующие действия:

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

Замените yourObjectOfIndividualDocument: yourMatchingIdOfIndividual на name: 'abcd'.Здесь name - поле Индивидуального документа, а не Пользовательского документа.

0 голосов
/ 28 февраля 2019

Вы добавляете условие в Заполнить

, если хотите заполнить массив вентиляторов в зависимости от их возраста и вернуть максимум 5 любых из них

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