Saat Anda menggunakan metode seperti find()
atau findOne()
di MongoDB, secara default Anda mengembalikan seluruh dokumen. Dan jika Anda menggunakan proyeksi, Anda dapat mengembalikan pasangan kunci/nilai tertentu.
Tetapi bagaimana jika Anda hanya menginginkan nilainya?
Anda dapat mengekstrak nilai bidang dengan menambahkan nama bidang itu ke kueri Anda saat menggunakan findOne()
.
Contoh
Misalkan kita memiliki koleksi yang disebut products
dengan dokumen sebagai berikut:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Topi" , "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "produk" :"Tutup", "ukuran" :[ "M", "L" ] }Jika kami ingin mengembalikan produk dokumen pertama, kami dapat melakukan hal berikut:
db.products.findOne().product
Hasil:
KelelawarPerhatikan bahwa kami menggunakan
findOne()
metode. Teknik ini tidak bekerja padafind()
metode.findOne()
metode mengembalikan satu dokumen, sedangkanfind()
metode hanya mengembalikan kursor ke dokumen.Jika kita ingin mengembalikan array kita bisa melakukan ini:
db.products.findOne().sizes
Hasil:
[ "S", "M", "L" ]Dan kita bisa mendapatkan nilai array dengan mereferensikan indeksnya:
db.products.findOne().sizes[0]
Hasil:
SArray berbasis nol, jadi
0
referensi elemen pertama dalam array,1
mereferensikan elemen kedua,2
yang ketiga, dan seterusnya.Dokumen Tertentu
Secara default,
findOne()
metode mengembalikan dokumen pertama dalam koleksi. Kita dapat memilih dokumen yang berbeda dengan menetapkan melewatkan kueri sebagai argumen pertama.Saya mengatakan "argumen pertama" karena
findOne()
juga menerimaprojection
argumen sebagai argumen kedua opsional.db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes
Hasil:
[ "S", "L", "XL" ]
Dalam hal ini saya menambahkan argumen proyeksi, tetapi tidak berpengaruh pada hasilnya. Tapi itu akan berpengaruh jika saya menetapkan nilai 0. Itu tidak akan menghasilkan apa-apa.
Dokumen Tersemat
Anda dapat menggunakan notasi titik untuk mengembalikan nilai dari dokumen yang disematkan
Contoh dokumen:
{ "_id" :1, "name" :"Wag", "details" :{ "type" :"Dog", "weight" :20 }}Kita dapat melakukan hal berikut untuk mengembalikan nilai dari dokumen yang disematkan:
db.pets.findOne().details.type
Hasil:
Anjing