sql >> データベース >  >> NoSQL >> MongoDB

オブジェクトの配列をKeyValueに投影します

    はい、 $arrayToObjectを使用します および $map 既存の配列を受け入れ可能な形式に変換するには:

    db.collection.aggregate([
      { "$replaceRoot": {
        "newRoot": {
          "$arrayToObject": {
            "$concatArrays": [
              [{ "k": "date", "v": "$_id.date" }],  
              { "$map": {
                "input": "$aggr",
                "in": { "k": "$$this.gender", "v": "$$this.count" }
              }}
            ]
          }
        }    
      }}
    ])
    

    もちろん、これが実際には既存の集計の「テール」にのみあり、演算子が導入されているMongoDB 3.4.4が少なくともない場合は、クライアントコードで結果を簡単に再形成できます。

    db.collection.aggregate([
      // existing pipeline
    ]).map(d => 
      Object.assign(
        { date: d._id.date },
        d.aggr.reduce((acc,curr) =>
          Object.assign(acc,{ [curr.gender]: curr.count }),{}
        )
      )
    )
    



    1. MongoDB:同じドキュメント内の別の配列に配列をコピーする

    2. マングースでnscannedを見つける方法は?

    3. MongoDB updateMany()

    4. redisのluaで現在の日付と時刻を取得する