因此,我嘗試使用 $match 和 $group 聚合來自 mongoDB 的資料,以獲得來自 mongoDB 的 JSON 資料的確切值和 d 格式,如下所示:
[ {
_id: new ObjectId("6357b4237cf79bba3e66c096"),
userId: new ObjectId("635762fe85b94eac7466d965"),
formId: new ObjectId("6357921d49de88bb7fffcfe4"),
title: 'Quality',
username: '[email protected]',
date: '2022-10-25',
answer: {
'6357921d49de88bb7fffcfe8': '[email protected]',
Text: '[email protected]',
'6357b331235053a9d4e8d037': '[email protected]',
Email: '[email protected]',
'6357b335235053a9d4e8d03a': 'Maja',
Plant: 'Maja'
},
createdAt: 1666692131,
updatedAt: 1666692131,
__v: 0
},
{
_id: new ObjectId("6357b54922866fae378af370"),
userId: new ObjectId("635762fe85b94eac7466d965"),
formId: new ObjectId("6357921d49de88bb7fffcfe4"),
title: 'Quality',
username: '[email protected]',
date: '2022-10-25',
answer: {
'6357921d49de88bb7fffcfe8': '[email protected]',
Text: '[email protected]',
'6357b331235053a9d4e8d037': '[email protected]',
Email: '[email protected]',
'6357b335235053a9d4e8d03a': 'Cica',
Plant: 'Cica'
},
createdAt: 1666692425,
updatedAt: 1666692425,
__v: 0
},
{
_id: new ObjectId("6357b6a2a13ab3c4a462be8f"),
userId: new ObjectId("635647c1e24d0a4482e3c0a9"),
formId: new ObjectId("6357921d49de88bb7fffcfe4"),
title: 'Quality',
username: '[email protected]',
date: '2022-10-25',
answer: {
'6357921d49de88bb7fffcfe8': '12',
Text: '12',
'6357b331235053a9d4e8d037': '[email protected]',
Email: '[email protected]',
'6357b335235053a9d4e8d03a': 'Ranca',
Plant: 'Ranca'
},
createdAt: 1666692770,
updatedAt: 1666692770,
__v: 0
}]
在 javascript 中使用這行代碼:
forms = await Answer.aggregate([
{
$match: { title: "Quality" },
},
{ $group: { title: "Quality"} },
]);
我期望的是這樣的結果:
{
formId: new ObjectId("6357921d49de88bb7fffcfe4"),
title: 'Quality',
username: [{'[email protected]',adam@wegodev.com}]
date: [{'2022-10-25','2022-10-26}]
answer: [{
'6357921d49de88bb7fffcfe8': 'john@nabatisnack.com',
Text: 'john@nabatisnack.com',
'6357b331235053a9d4e8d037': 'john@dose.com',
Email: 'john@dose.com',
'6357b335235053a9d4e8d03a': 'Maja',
Plant: 'Maja'
},{
'6357921d49de88bb7fffcfe8': 'john@dose.com',
Text: 'john@dose.com',
'6357b331235053a9d4e8d037': 'john@nabatisnack.com',
Email: 'john@nabatisnack.com',
'6357b335235053a9d4e8d03a': 'Cica',
Plant: 'Cica'
},...etc],
},
我嘗試使用更復雜的查詢,但它似乎沒有回傳我想要的結果,我試圖尋找任何相關的問題,但它不會回傳與我想要的相同的結果
uj5u.com熱心網友回復:
你有正確的想法使用$group
,你只需要正確地利用它的語法,就像這樣:
db.collection.aggregate([
{
$match: {
title: "Quality"
}
},
{
$group: {
_id: "$title",
title: {
$first: "$title"
},
username: {
"$addToSet": "$username"
},
date: {
$addToSet: "$date"
},
formId: {
$addToSet: "$formId"
},
answer: {
$push: "$answer"
}
}
}
])
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520165.html
標籤:mongodb
下一篇:如何檢查布爾變數的值是否為假?