Как использовать "find ()" с полем заполнения в мангусте? - PullRequest
2 голосов
/ 01 июля 2019

У меня есть 2 коллекции в том же БД. Мне нужно использовать find (), чтобы выбрать только «События», в которых «team» равно «team1»

Большое спасибо.

Я пытаюсь найти по полю населения, но это не работает.

 This is my Event schema
    const Event = mongoose.model('Event', new mongoose.Schema({
        title: {
            type: String,
            required: true,
            min: 3
        },
        eventType: {
            type: String,
            lowercase: true
        },
        date: {
            type: Date,
            default: Date.now()
        },
        venue: String,
        country: String,
        callLog: {
            type: String,
            max: 1000
        },
        eventImgUrl: [String],
        editedBy : {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'User'
        },
        timestamp: {
            type: String, 
            default: Date.now()
        }
    }));

This is my User schema
    const User = mongoose.model('User', new mongoose.Schema({
        username: {
            type: String,
            required: true,
            min: 3,
            lowercase: true
        },
        name: String,
        email: String,
        team: String,
        role: {
            type: String,
            enum: ['admin', 'creator', 'viewer']
        }
    }));

This is my Controller
    const events = await Event.find()
        .populate({ path: 'editedBy', select: ['name', 'team']});

    res.send(events);

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

select просто указывает возвращаемые поля. Вам нужно использовать заполнить совпадение :

await Event.find()
    .populate({ path: 'editedBy', match: { yourField: 'yourmatch' }});
0 голосов
/ 01 июля 2019

К find все Events, которые имеют team из "team1":

const team1Events = await Event.find({ team: "team1" });
...