尋找如何通過查詢來執行特定的 Mongo 檔案分組,而不是在獲取資料后通過代碼轉換結果。
示例模擬資料:
[
{ 'id': 1, 'status': 'EMPTY', 'name': 'ALBERT' },
{ 'id': 2, 'status': 'EMPTY', 'name': 'ERIC' },
{ 'id': 3, 'status': 'EMPTY', 'name': 'ALBERT' },
{ 'id': 4, 'status': 'EMPTY', 'name': 'ALBERT' },
{ 'id': 5, 'status': 'EMPTY', 'name': 'JESSICA' },
{ 'id': 6, 'status': 'EMPTY', 'name': 'ERIC' },
...
]
我的匯總查詢:
db.results.aggregate([
{
$match: {
'status': 'EMPTY'
}
},
???
])
我想將結果轉換/排序為這樣的物件:
{
'ALBERT': [
{ 'id': 1, 'status': 'EMPTY', 'name': 'ALBERT' },
{ 'id': 3, 'status': 'EMPTY', 'name': 'ALBERT' },
{ 'id': 4, 'status': 'EMPTY', 'name': 'ALBERT' },
],
'ERIC': [
{ 'id': 2, 'status': 'EMPTY', 'name': 'ERIC' },
{ 'id': 6, 'status': 'EMPTY', 'name': 'ERIC' }
],
'JESSICA': [
{ 'id': 5, 'status': 'EMPTY', 'name': 'JESSICA' }
]
}
在線查看檔案有點困難,因為我什至不確定這種型別的轉換被稱為什么,或者我應該在 Mongo 中使用什么聚合器。因此,任何朝著正確方向的觀點都將不勝感激!
謝謝!!
uj5u.com熱心網友回復:
試試這個:
db.collection.aggregate([
{ $unset: "_id" },
{
$group: {
_id: "$name",
data: { $push: "$$ROOT" }
}
},
{
$project: {
data: {
k: "$_id",
v: "$data"
}
}
},
{ $replaceRoot: { newRoot: { $arrayToObject: "$data" } } },
{
$group: {
_id: null,
data: { $push: "$$ROOT" }
}
},
{ $replaceRoot: { newRoot: { $mergeObjects: "$data" } } }
])
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/419443.html
標籤:
