#mongodb
#mongodb
Вопрос:
Я работаю над запросом, который группирует записи за день и подсчитывает их в MongoDB, вот мой запрос
db.getCollection('CustomerApplications').aggregate(
[
{
$group:
{
_id: { day: { $dayOfYear: { $toDate: "$data.submittedAt" }}, year: { $year: { $toDate: "$data.submittedAt" } } },
count: { $sum: 1 }
}
}
]
)
$data.submittedAt — это двойное значение, поэтому мне нужно преобразовать его в date, а затем извлечь из него $ DayOfYear
но я получаю
Нераспознанное выражение ‘$ToDate’
моя структура данных похожа
{
"_id" : ObjectId("5c942f50dae240feb1942b00"),
"data" : {
"id" : "624c0d17-b683-4c89-9d7c-011577d4e3b8",
"email" : "i8888@eee.com",
"name" : "ianh",
"phoneNumber" : " 1222222",
"score" : 12,
"status" : "PENDING",
"submittedAt" : 1553215312006.0,
"surveyVersion" : "1"
},
"updatedAt" : ISODate("2019-03-21T00:41:52.192Z")
}
есть идеи, возможно ли это в MongoDB, если да, то как это правильно сделать?
Комментарии:
1. Я создал образцы данных { «_id»: ObjectId («5c9431a35af55c2d7e38fa71»), «submittedAt»: 1553215849377, «name»: «Alec»}, { «_id»: ObjectId («5c9431a35af55c2d7e38fa70»), «submittedAt»: 1553215849377, «имя»: «Джеральд» } затем я выполняю ваш запрос. работает нормально. можете ли вы предоставить содержимое пользовательских приложений?
2. $ ToDate работает у вас?
3. да, это работает. вот результат { «_id» : { «день»: 81, «год»: 2019}, «количество»: 2}
4. Я попробовал ваши образцы данных. работает нормально. Я не могу найти, почему вы получаете ошибку. где вы запускали свой запрос?
5. Я тестирую на Robo 3T, и моя версия MongoDB — v4.0.4
Ответ №1:
$toDate New in version 4.0. Please check your version
Можете ли вы попробовать с этим.
db.getCollection('CustomerApplications').aggregate(
[
{
$group:
{
_id : { $substr: ["$data.submittedAt", 0, 10] },
count: { $sum: 1 }
}
}
])
Возможно, это поможет вам
$toDate - Converts a value to a date (New in version 4.0)
$dayOfMonth - Returns the day of the month for a date as a number between 1 and 31
$dayOfYear - Returns the day of the year for a date as a number between 1 and 366
Комментарии:
1. моя версия — v4.0.4