Можно ли вводить данные приведения в конвейер агрегации на MongoDB?
Когда мне нужно агрегировать вещи по дате, используяaggregate
Команда на MongoDB, я обычно делаю это:
db.mycollection.aggregate(
{
$project: {
day: {$dayOfMonth: "$date"},
mon: {$month: "$date"},
year: {$year: "$date"},
}
},
{
$group: {
_id : {day: "$day", mon: "$mon", year: "$year"},
count: {$sum: 1}
}
}
)
и в конечном итоге объединитьday
, mon
, а такжеyear
поля в строку даты в приложении. Однако по многим причинам иногда я хочу объединить поля перед тем, как покинуть базу данных, поэтому я сначала попытался:
db.mycollection.aggregate(
{
$project: {
day: {$dayOfMonth: "$date"},
mon: {$month: "$date"},
year: {$year: "$date"},
}
},
$project: {
datestr: {
$concat : ["$year", "-", "$month", "-", "$day"]
}
}
},
{
$group: {
_id : {day: "$day", mon: "$mon", year: "$year"},
count: {$sum: 1}
}
}
)
Это не сработает, потому что$concat
ожидает строк иday
, mon
а такжеyear
целые числа. Итак, мой вопрос: могу ли я набрать поле с$project
операция?