Задать вопрос

Как написать aggregate запрос mongoDB?

Всем привет. Пишу сейчас запрос с группированием на mongodb. Есть некоторые проблемы. Сам запрос:
const StatsSchema = mongoose.Schema({
    advertiser: {
        type: ObjectId,
        ref: 'Advertiser',
        required: true
    },
    offer: {
        type: ObjectId,
        ref: 'Offer',
        required: true
    },
    spent: {
        type: Number,
        required: true
    },
    revenue: {
        type: Number,
        required: true
    },
    date: {
        type: String,
        required: true
    },
    user: {
        type: ObjectId,
        ref: 'User',
        required: true
    }
});

module.exports.getMyDailyStats = (advertiser, user, callback) => {
  Stats.aggregate([
        {
            $match: {
                $and: [{ advertiser: advertiser }, { user: user }]
            }
        },
        { 
            $group: { 
                _id: "$offer",
                stats: {
                    $push: {
                        spent: '$spent',
                        revenue: '$revenue',
                        date: '$date'
                    }
                }

            },
        }
    ], callback);
}

Пример документа в базе (mLab)
{
    "_id": {
        "$oid": "5a49490c79007365f64b44c4"
    },
    "advertiser": {
        "$oid": "5a49024a87aec437bdd6d976"
    },
    "offer": {
        "$oid": "5a49046954383f38ab383351"
    },
    "spent": 500,
    "revenue": 800,
    "date": "2017-12-25T22:00:00.000Z",
    "user": {
        "$oid": "5a46969521d5214eada6ca0d"
    },
    "__v": 0
}


Когда запрос выполнился, то возвращает пустой массив, но такие значения в базе есть. И еще хочется, чтобы вместо id офера возвращалось его название (populate). Помогите пожалуйста. Спасибо
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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