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

ubah agregat mongodb dokumen kunci

Untuk membuat objek bersarang dengan kunci dinamis, Anda perlu menggunakan $ arrayToObject yang mengambil larik kunci (k ) dan values (v ) sebagai parameternya. Kemudian Anda dapat menggunakan $replaceRoot untuk mempromosikan objek baru itu ke tingkat root. Anda memerlukan MongoDB 4.0 untuk mengonversi ObjectId ke string menggunakan $toString operator

db.col.aggregate([
    {
        $replaceRoot: {
            newRoot: {
                $arrayToObject: {
                    $let: {
                        vars: { data: [ { k: { $toString: "$_id" }, v: "$serie" } ] },
                        in: "$$data"
                    }
                }
            }
        }
    }
])

Keluaran:

{
    "5b97f6cea37f8c96db70fea9" : {
            "_id" : ObjectId("5a55f988b6c9dd15b47faa2a"),
            "updatedAt" : ISODate("2018-02-09T13:22:54.521Z"),
            "createdAt" : ISODate("2018-01-10T11:31:20.978Z"),
            "deletar" : false,
            "infantil" : false,
            "status" : true,
            "turma" : [ ]
    }
}

Jika Anda ingin menyingkirkan _id dalam hasil Anda, Anda dapat menentukan bidang secara eksplisit di v seperti:

v: { updatedAt: "$serie.updatedAt", createdAt: "$serie.createdAt", ... }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Catatan Hitungan PHP MongoDB

  2. MongoDB Hitung jumlah total nilai benar dan salah untuk dokumen yang cocok dengan kueri

  3. Di ReactiveMongo 0.18.8, bagaimana saya bisa melakukan pembaruan beberapa dokumen, dengan nilai yang berbeda, dalam satu perintah?

  4. Bidang array terbalik di MongoDB

  5. Array concat menggunakan PyMongo gagal dengan operator grup yang tidak dikenal '$concatArrays'