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

Kueri Agregasi MongoDB- Ganti Nama Bidang yang Dikembalikan dari Dalam Dokumen Tersemat

Ada beberapa pendekatan untuk ini, tetapi sebagian besar tergantung pada versi MongoDB Anda. Versi terbaru dari 2.6 dan ke atas mendukung $map operator yang dapat Anda gunakan di $project untuk melakukan apa yang Anda inginkan:

db.friend.aggregate([
    { "$project": {
        "name": 1,
        "buddies": {
            "$map": {
                "input": "$friends",
                "as": "el",
                "in": {
                    "nickName": "$$el.name",
                    "age": "$$el.age"
                }
            }
        }
    }}
])

Di versi sebelumnya Anda akan menggunakan $unwind untuk bekerja dengan elemen array dan membangun kembali melalui $group :

db.collection.aggregate([
    { "$unwind": "$friends" },
    { "$group": {
        "_id": "$_id",
        "name": { "$first": "$name" },
        "buddies": {
            "$push": {
                "nickName": "$friends.name",
                "age": "$friends.age"
            }
        }
    }}
])

Dengan formulir pertama menjadi sedikit lebih efisien karena Anda tidak mendenormalisasi konten array dan menghasilkan lebih banyak dokumen dalam alur untuk diproses.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara memulai kembali rantai janji secara kondisional dari awal?

  2. Bagaimana cara membuat daftar semua database MongoDB di Node.js?

  3. mongodb - Bangun DBRef dengan string atau ObjectId

  4. Tidak dapat POST di nodejs dan mongodb di openshift

  5. MongoDB berkinerja lambat di bawah beban