Как вы можете использовать несколько идентификаторов в mon go aggregate $ group при выполнении $ dateToString для одного из идентификаторов - PullRequest
0 голосов
/ 25 апреля 2020

Я хочу использовать $ dateToString, чтобы мои данные были разбиты по дням, а также я хочу сгруппировать по именам журналов.

Группировка по дате и имени журнала работает, если я не использую $ dateToString, но затем каждый запись разделяется по каждому указанному c времени, так как даты хранятся в формате по умолчанию для mongos («2020-04-21T02: 06: 26.139Z»

Кажется, проблема связана с попыткой использовать $ dateToString для преобразовать дату, имея другой идентификатор

Это работает само по себе (группы по дням)

Entry.aggregate(
    [{                
          $group: {
                    _id: { $dateToString: { format: "%d-%m-%Y", date: "$date" } },
},},],

Это то, что я хочу сделать, но это не работает

Entry.aggregate(
    [{                
          $group: {
                 _id: { $dateToString: { format: "%d-%m-%Y", date: "$date" }, logname: "$logname"}, 

},},],

Это работает без вышеуказанного преобразования $ date (группы по каждому указанному c время и имя журнала)

Entry.aggregate(
    [{                
            $group: {
                   _id: { date: "$date", logname: "$logname" },                    
},},],

Ошибка

"errmsg": "An object representing an expression must have exactly one field: { $dateToString: { format: \"%d-%m-%Y\", date: \"$date\" }, logname: \"$logname\" }",

1 Ответ

0 голосов
/ 25 апреля 2020

Мне просто нужно было назвать форматированную дату (названную dateFormated)

_id: { dateFormated: { $dateToString: { format: "%d-%m-%Y", date: "$date" }}, logname: "$logname"}, 
...