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

Zip array dengan MongoDB

Mulai dari MongoDB 3.4, kita dapat menggunakan $zip operator untuk meng-zip array kita.

Karena itu, kami tidak bisa mendapatkan hasil yang Anda harapkan kecuali Anda mengetahui panjang array Anda.

db.collection.aggregate( [ 
    { "$project": { 
        "zipped": { 
            "$zip": { "inputs": [ "$A", "$B", "$C" ] } 
        } 
    }}
])

yang menghasilkan:

{ 
    "_id" : ObjectId("578f35fb6db61a299a383c5b"),
    "zipped" : [
        [ "A1", "B1", 100 ],
        [ "A2", "B2", 200 ],
        [ "A3", "B3", 300 ]
    ]
}

Jika kita mengetahui jumlah elemen di setiap sub-array, kita dapat menggunakan $map operator variabel yang mengembalikan larik sub-dokumen.

Dalam $map ekspresi, kita perlu menggunakan $arrayElemAt operator untuk mengatur nilai bidang A, B, dan C kita.

db.collection.aggregate( [ 
    { "$project": { 
        "zipped": { 
            "$map": { 
                "input": { 
                    "$zip": { "inputs": [ "$A", "$B", "$C" ] } 
                }, 
                "as": "el", 
                "in": { 
                    "A": { "$arrayElemAt": [ "$$el", 0 ] }, 
                    "B": { "$arrayElemAt": [ "$$el", 1 ] }, 
                    "C": { "$arrayElemAt": [ "$$el", 2 ] } 
                } 
            }
        }
    }}
] )

yang menghasilkan:

{
    "_id" : ObjectId("578f35fb6db61a299a383c5b"),
    "zipped" : [
        {
            "A" : "A1",
            "B" : "B1",
            "C" : 100
        },
        {
            "A" : "A2",
            "B" : "B2",
            "C" : 200
        },
        {
            "A" : "A3",
            "B" : "B3",
            "C" : 300
        }
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pemberitahuan MongoDB dengan Python

  2. Dorong elemen di posisi array apa pun di subdokumen

  3. Upser luwak tidak membuat properti skema default

  4. Apa perbedaan antara findAndModify dan pembaruan di MongoDB?

  5. Daftar dan sajikan file dari GridFS dengan Flask