Я пытаюсь написать запрос на mongoDb, чтобы сгруппировать данные по определенному полю (storeId). Каждая группа будет иметь несколько записей для одного и того же storeId. Мне нужно, чтобы записи в каждой группе были упорядочены по полю (timeStamp). Еще лучшим решением было бы после сортировки записей в каждой группе выбрать только первую запись, чтобы в каждой группе была только одна запись. Это то, что я пытался:
const result = await deliverydays.aggregate([
{
$match: {
"storeId": { $in: storeIds },
"eci.openTimeStamp": { $ne: null },
"eci.dayStatus": "OPEN"
}
},
{
$group: {
_id: "$storeId",
data: {
$push: { openTimeStamp: "$eci.openTimeStamp", storeId: "$storeId" }
},
$sort: { openTimeStamp: 1 }
}
}
])
он жалуется с ошибкой "Поле '$ sort' должно быть объектом-аккумулятором" Я тоже пробовал это:
const result = await deliverydays.aggregate([
{
$match: {
storeId: { $in: storeIds },
"eci.openTimeStamp": { $ne: null },
"eci.dayStatus": "OPEN"
}
},
{
$group: {
_id: "$storeId",
data: {
$push: { openTimeStamp: "$eci.openTimeStamp", storeId: "$storeId" }
}
}
},
{
$sort: { openTimeStamp: 1 }
}
])
Но все же не работает Я понял, что вторая структура, только если я хочу отсортировать по "_id" или "data"
Любая помощь будет оценена. Я заранее прошу прощения, если это считается легким, но я новичок в мире информационных технологий, а также пришел с SQL сервера.