MongoDB aggregation $match error: "аргументы должны быть операторами конвейера aggregate"
Я могу получить всю статистику сайта с aggregation
но я хочу это для определенного пользователя, например $where
.
все характеристики:
games.aggregate([{
$group: {
_id: '$id',
game_total: { $sum: '$game_amount'},
game_total_profit: { $sum: '$game_profit'}}
}]).exec(function ( e, d ) {
console.log( d )
})
когда я пытаюсь использовать $match
оператор, я получаю ошибку:
games.aggregate([{
$match: { '$game_user_id' : '12345789' },
$group: {
_id: '$id',
game_total: { $sum: '$game_amount'},
game_total_profit: { $sum: '$game_profit'}}
}]).exec(function ( e, d ) {
console.log( d )
})
Arguments must be aggregate pipeline operators
что я упустил?
1 ответов
этапы конвейера являются отдельными документами BSON в массиве:
games.aggregate([
{ $match: { 'game_user_id' : '12345789' } },
{ $group: {
_id: '$id',
game_total: { $sum: '$game_amount'},
game_total_profit: { $sum: '$game_profit'}}
}}
]).exec(function ( e, d ) {
console.log( d )
});
Итак, массив или []
скобочная нотация в JavaScript означает, что он ожидает, что будет предоставлен "список". Это означает список "документов", которые обычно указываются в нотации JSON с {}
брекеты.