簡體   English   中英

帶有數組索引值的MongoDB聚合推送

[英]Mongodb aggregate push with index value of array

我被困在一個聚合查詢中,以下是我的數據

Let database = [
{
 _id: 'fefesf', name: 'John', info: {date: ISODate(), marks: '12'}
},
{
 _id: 'uiuioo', name: 'John', info: {date: ISODate(), marks: '15'}
},
{
 _id: 'erygbo', name: 'Ben', info: {date: ISODate(), marks: '18'}
}]

我的匯總查詢是

var query = [{
  $group: {
   _id: '$name',
   Marks: {
     $push: {
       x: '$index',  ..............(not working right now)
       y: '$info.marks'
     }
   }
 }
}]

是否可以在將分組文檔的索引推入“Marks”數組時將其索引為“x”。 像輸出應該是

[
 {_id: 'John', Marks: [{x: 1, y: 12}, {x: 2, y: 15}]},
 {_id: 'Ben',{x: 1, y: 18}}
] 

提前致謝。!

從 mongoDB 3.6 版開始,您可以使用$reduce *:

db.collection.aggregate([
  {
    $group: {
      _id: "$name",
      Marks: {$push: {y: "$info.marks"}}
    }
  },
  {$project: {
      Marks: {
        $reduce: {
          input: "$Marks",
          initialValue: [],
          in: {$concatArrays: [
              "$$value",
              [
                {
                  y: "$$this.y",
                  x: {$add: [{$size: "$$value"}, 1]}
                }
              ]
            ]
          }
        }
      }
    }
  }
])

看看它在操場上的例子是如何工作的

*受此答案啟發

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM