MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Array proyek Objek ke Nilai Kunci

Ya, menggunakan $arrayToObject dan $map untuk mengonversi larik yang ada ke format yang diterimanya:

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

Tentu saja jika ini sebenarnya hanya pada "ekor" dari agregasi yang ada dan Anda tidak memiliki setidaknya MongoDB 3.4.4 di mana operator diperkenalkan, maka Anda cukup membentuk kembali hasilnya dalam kode klien:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menulis kueri pembaruan di mongodb untuk array yang sangat bersarang?

  2. Bagaimana memproyeksikan DBRef pada Agregasi Spring MongoDB?

  3. Memperkenalkan Bagan Pencarian di MongoDB

  4. Melayani URL dinamis dengan express dan mongodb

  5. PHP Startup Tidak dapat memuat pustaka dinamis php_mongo.dll