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

Ganti Nama Bidang di Hasil Kueri di MongoDB

Terkadang saat Anda menanyakan koleksi di MongoDB, Anda mungkin tidak senang dengan nama bidangnya. Secara default, nama bidang hanyalah cerminan dari nama bidang dalam dokumen sebenarnya.

Mungkin nama bidang tidak konsisten, atau ada kesalahan ketik. Apa pun alasannya, Anda dapat menggunakan $project tahap pipa agregasi untuk mengganti nama bidang dalam hasil kueri Anda.

Dalam beberapa hal, ini sebanding dengan menggunakan alias di SQL, karena tidak mengganti nama bidang yang mendasarinya, ini hanya mengganti namanya di hasil kueri.

Contoh

Misalkan kita mengembalikan isi koleksi seperti ini:

db.employees.find()

Hasil:

{ "_id" : 2, "name" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "name" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "name" : "Chris", "salary" : 45000 }
{ "_id" : 5, "name" : "Beck", "salary" : 82000 }

Di sini, kami menggunakan find() metode untuk mengembalikan konten koleksi.

Dalam hal ini, nama masing-masing bidang dikembalikan dalam hasil.

Tapi bagaimana jika kita ingin nama field berbeda? Misalnya, bagaimana jika kita ingin mengganti name dengan employee ?

Dalam hal ini kita bisa menggunakan aggregate() metode untuk melakukan kueri seperti ini:

db.employees.aggregate([
  { "$project": { "employee": "$name", "salary": 1 }}
])

Hasil:

{ "_id" : 2, "salary" : 128000, "employee" : "Sarah" }
{ "_id" : 3, "salary" : 25000, "employee" : "Fritz" }
{ "_id" : 4, "salary" : 45000, "employee" : "Chris" }
{ "_id" : 5, "salary" : 82000, "employee" : "Beck" }

Perhatikan bahwa MongoDB menampilkan bidang dalam urutan penyisipan, yang menghasilkan salary bidang yang disajikan sebelum employee bidang. Jika itu tidak dapat diterima, kami selalu dapat mengubah kueri menjadi ini:

db.employees.aggregate([
  { "$project": { "employee": "$name", "salary": "$salary" }}
])

Hasil:

{ "_id" : 2, "employee" : "Sarah", "salary" : 128000 }
{ "_id" : 3, "employee" : "Fritz", "salary" : 25000 }
{ "_id" : 4, "employee" : "Chris", "salary" : 45000 }
{ "_id" : 5, "employee" : "Beck", "salary" : 82000 }

Ganti Nama Bidang di Dokumen Tersemat

Anda dapat menggunakan metode yang sama untuk mengganti nama bidang dalam dokumen yang disematkan. Dalam hal ini, gunakan notasi titik untuk merujuk ke bidang yang ingin Anda ganti namanya.

Misalkan kita menjalankan kueri berikut terhadap pets koleksi:

db.pets.find().pretty()

Hasil:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20,
		"awards" : {
			"Florida Dog Awards" : "Top Dog",
			"New York Marathon" : "Fastest Dog",
			"Sumo 2020" : "Biggest Dog"
		}
	}
}
{
	"_id" : 2,
	"name" : "Fetch",
	"details" : {
		"born" : ISODate("2020-06-22T14:00:00Z"),
		"color" : "Black"
	}
}
{
	"_id" : 3,
	"name" : "Scratch",
	"details" : {
		"eats" : [
			"Mouse Porridge",
			"Bird Soup",
			"Caviar"
		],
		"type" : "Cat",
		"born" : ISODate("2020-12-19T14:00:00Z")
	}
}

Kami dapat mengganti nama bidang pada dokumen yang disematkan seperti ini:

db.pets.aggregate([
  { "$project": 
    { 
      "_id": 0,
      "Pet": "$name",
      "Type": "$details.type",
      "Born": "$details.born"
    }
  }
])

Hasil:

{ "Pet" : "Wag", "Type" : "Dog" }
{ "Pet" : "Fetch", "Born" : ISODate("2020-06-22T14:00:00Z") }
{ "Pet" : "Scratch", "Type" : "Cat", "Born" : ISODate("2020-12-19T14:00:00Z") }

Dalam hal ini saya tidak memilih semua bidang dalam dokumen yang disematkan, tetapi Anda mengerti.

Saya juga menggunakan "_id": 0 untuk menghilangkan _id lapangan.

Perhatikan juga bahwa jika dokumen sebenarnya tidak memiliki bidang yang ditentukan dalam $project tahap, maka itu hanya akan dihilangkan dalam dokumen yang dihasilkan. Anda dapat melihat ini di dokumen pertama, yang menghilangkan tanda Born bidang, dan dokumen kedua, yang menghilangkan Type lapangan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Model Terbaik untuk Mewakili Banyak ke Banyak hubungan dengan atribut di MongoDB

  2. Bagaimana mengatur hubungan banyak ke banyak di MongoDB

  3. Otomasi Penerapan Basis Data MongoDB

  4. Upsert massal di MongoDB menggunakan luwak

  5. Cara Menginstal MongoDB 4.2 pada sistem RedHat/ CentOS 7