我正在使用 MongoDB(通過帶有 NodeJS/Express 后端的 Mongoose)并且有一個資料結構,我首先需要按兩個欄位分組,然后在該級別分組,然后按資料庫中的第三個欄位分組。
我的資料結構如下(為簡單起見減少了):
{
{
brand: "AMD",
series: "5000",
model: "5900x",
userRating: 5
},
{
brand: "AMD",
series: "5000",
model: "5900x",
userRating: 2
},
{
brand: "AMD",
series: "5000",
model: "5600x",
userRating: 3
},
{
brand: "AMD",
series: "3000",
model: "3900x",
userRating: 5
},
{
brand: "Intel",
series: "i9",
model: "12900k",
userRating: 5
},
{
brand: "Intel",
series: "i9",
model: "12900k",
userRating: 4
}
}
正如您將注意到的,單個 CPU 型號可以重復多次。
結果,我想要做的事情如下:
按 BOTH
brand和series一旦按
brand和分組series,然后在個人model級別分組并平均該userRating模型的 。
因此,資料的期望最終結果如下
{
{
brand: "AMD",
series: "5000",
data: [
{
model: "5900x"
avgRating: 3.5
},
{
model: "5600x"
avgRating: 3
}
]
},
{
brand: "AMD",
series: "3000",
data: [
{
model: "3900x"
avgRating: 5
}
]
},
{
brand: "Intel",
series: "i9",
data: [
{
model: "12900k"
avgRating: 4.5
}
]
}
}
我已經嘗試了 100 和一種方法來嘗試讓它作業,但我仍然很難過。
到目前為止,我在 2 晚的時間里看到的最接近的結果如下:
const aggregate = await CpuReviews.aggregate([
{
$group: {
_id: {
groupId: { series: "$series", brand: "$brand" },
model: "$model",
userRating: { $avg: "$userRating" },
},
},
},
{
$group: {
_id: "$_id.groupId",
data: {
$push: {
model: "$_id.model",
userRating: { $avg: "$_id.userRating" },
},
},
},
},
]);
這最終形成如下的資料結構:
{
"_id": {
"series": "3000",
"brand": "amd"
},
"data": [
{
"model": "Ryzen 9 3950X",
"userRating": 5678
}
]
},
我也嘗試過使用$project來重新處理資料,但無法接受上面的內容并使其更接近(我通常會拋出內部服務器錯誤)。
提前感謝您提供有關我哪里出錯以及如何回到正確道路的任何見解。
uj5u.com熱心網友回復:
問題是您已按所有欄位分組,如下所示,
$group通過series,brand, 和model欄位并獲得平均值$group通過series和欄位并使用和平均欄位brand構造data陣列model$project顯示必填欄位并格式化結果
const aggregate = await CpuReviews.aggregate([
{
$group: {
_id: {
series: "$series",
brand: "$brand",
model: "$model"
},
avgRating: { $avg: "$userRating" }
}
},
{
$group: {
_id: {
series: "$_id.series",
brand: "$_id.brand"
},
data: {
$push: {
model: "$_id.model",
avgRating: "$avgRating"
}
}
}
},
{
$project: {
_id: 0,
series: "$_id.series",
brand: "$_id.brand",
data: 1
}
}
])
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410184.html
標籤:
下一篇:具有強制屬性的C#泛型型別
