CartmanGui
@CartmanGui

Как в mongoose получить данные из поля массив?

Есть следующая структура моделей:
var Schema = mongoose.Schema;
var schemaMessage = new Schema({
    message: {
        type: String,
        required: true
    },
    from: {
        type: Schema.ObjectId
    },
    to: {
        type: Schema.ObjectId,
    },
    date_created: {
        type: Date,
        default: Date.now
    }
});

var schemaTopic = new Schema({
    title: {
        type: String,
        required: true
    },
    creator: {
        type: Schema.ObjectId,
        required: true,
        ref: 'User'
    },
    messages: [schemaMessage],
    date_created: {
        type: Date,
        default: Date.now
    }
});


Нужно для топика получить n его документов пытаюсь это сделать так

schemaTopic.statics.getMessageList = function (topic,  callback) {
    console.log(topic);
    this.aggregate([
        {$match: {_id: topic}},
        {$unwind: "$messages"}
    ],callback);
};

но получаю пустой массив но если в $match делать поиск не по _id, а к примеру по creator то документ находится
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 1
CartmanGui
@CartmanGui Автор вопроса
В общим как оказалось нужно преобразовать было topic в ObjectID
{$match: {_id: mongoose.mongo.ObjectID(topic)}}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы