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

Bagaimana cara mengganti nama bidang saat melakukan pencarian/proyeksi di MongoDB?

Jadi pada dasarnya menggunakan .aggregate() bukannya .find() :

db.tweets.aggregate([
    { "$project": {
        "_id": 0,
        "coords": "$level1.level2.coordinates"
    }}
])

Dan itu memberi Anda hasil yang Anda inginkan.

MongoDB 2.6 dan versi di atasnya menampilkan "kursor" seperti yang dilakukan find.

Lihat $project dan operator kerangka kerja agregasi lainnya untuk detail selengkapnya.

Untuk sebagian besar kasus, Anda cukup mengganti nama bidang seperti yang dikembalikan dari .find() saat memproses kursor. Untuk JavaScript sebagai contoh, Anda dapat menggunakan .map() untuk melakukan ini.

Dari cangkang:

db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => {
  doc.coords = doc['level1']['level2'].coordinates;
  delete doc['level1'];
  return doc;
})

Atau lebih sebaris:

db.tweets.find({},{'level1.level2.coordinates': 1, _id:0}).map( doc => 
  ({ coords: doc['level1']['level2'].coordinates })
)

Ini menghindari overhead tambahan di server dan harus digunakan dalam kasus seperti di mana overhead pemrosesan tambahan akan lebih besar daripada keuntungan pengurangan aktual dalam ukuran data yang diambil. Dalam hal ini ( dan sebagian besar ) akan menjadi minimal dan oleh karena itu lebih baik untuk memproses ulang hasil kursor untuk merestrukturisasi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara membandingkan 2 koleksi mongodb?

  2. ECONNREFUSED kesalahan saat menghubungkan ke mongodb dari node.js

  3. MongoDB, Mongoose:Bagaimana menemukan subdokumen dalam dokumen yang ditemukan?

  4. Bagaimana memproyeksikan indeks array setelah melepas array dengan kerangka kerja agregasi MongoDB

  5. MongoDB $ada