Perhatikan juga bahwa ini adalah kueri yang sangat tidak efisien secara umum karena perlu menelusuri semua dokumen dalam koleksi untuk menemukan kecocokan. Anda mungkin ingin mempertimbangkan untuk menyimpan simbol ticker saham dalam properti array yang berbeda sebagai bagian dari dokumen dan menggunakan Show
Operator Misalnya, jika Anda memiliki jumlah uang yang menyertakan tanda dolar, MongoDB mungkin secara tidak sengaja menafsirkannya sebagai nama bidang. Anda dapat menggunakan ContohMisalkan kita memiliki koleksi bernama { "_id" : 1, "name" : "Homer" } Berikut adalah contoh penerapan _Hasil { "interpreted" : "Homer", "literal" : "$name" } Dalam contoh ini, kami mengembalikan nilai bidang _1 dengan menggunakan 2 untuk merujuknyaKami juga mengembalikan nilai literal _2, tanpa MongoDB mengartikannya sebagai bidang 1Contoh 2Misalkan koleksi kita berisi dokumen berikut { "_id" : 2, "a" : 10, "b" : 5 } Berikut contoh lain penggunaan _Hasil { "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }_ Dalam hal ini, bidang pertama yang dikembalikan berisi hasil dari operator 6 terhadap bidang 7 dan 8 MongoDB 5. 0 menambahkan dukungan yang ditingkatkan untuk nama bidang yang diawali dengan dolar ( 1) atau yang mengandung titik ( 0). Aturan validasi untuk menyimpan data telah diperbarui agar lebih mudah bekerja dengan sumber data yang menggunakan karakter iniDalam banyak kasus, data yang disimpan menggunakan nama bidang seperti ini tidak dapat diakses secara langsung. Anda perlu menggunakan metode pembantu seperti , , dan dalam kueri yang mengakses bidang tersebut Aturan validasi nama bidang tidak sama untuk semua jenis operasi penyimpanan. Halaman ini merangkum bagaimana berbagai operasi penyisipan dan pembaruan menangani dolar ( 1) nama bidang yang diawaliSisipkan operasiKolom awalan Dollar ( _1) diizinkan sebagai nama kolom tingkat atas dan bertingkat untuk sisipan
Bidang awalan dolar ( _1) diizinkan pada sisipan menggunakan kata-kata yang dicadangkan. Nama operator seperti dapat digunakan sebagai nama bidang serta kata-kata seperti 1, 2, dan 3
Pembaruan yang membuat dokumen baru selama proses diperlakukan sebagai 4 daripada 5 untuk validasi nama bidang. dapat menerima kolom awalan dolar ( _1). Namun, apakah kasus khusus dan operasi pemutakhiran serupa dapat menyebabkan kesalahan jika bagian 7 pemutakhiran memilih dokumen yang adaContoh kode ini memiliki _8 sehingga akan menyisipkan dokumen baru jika koleksi belum berisi dokumen yang cocok dengan istilah kueri, 9. Jika kode contoh ini cocok dengan dokumen yang ada, pembaruan akan gagal karena 0 diawali dengan dolar ( 1)
Dokumen Mengganti PembaruanPerbarui operator dengan mengganti bidang yang ada dengan dokumen baru atau memodifikasi bidang tersebut. Jika pembaruan melakukan penggantian, bidang awalan dolar ( 1) tidak diizinkan sebagai nama bidang tingkat atasPertimbangkan dokumen seperti
Anda dapat menggunakan operator pembaruan yang menggantikan dokumen yang ada untuk mengubah bidang 3 tetapi Anda tidak dapat memperbarui bidang 4 dengan cara itu
Gunakan sebagai bagian dari pipa agregasi untuk dolar ( _1) bidang diawali seperti 4Pembaruan Modifikasi DokumenSaat pembaruan mengubah, bukannya mengganti, bidang dokumen yang ada, bidang awalan dolar ( 1) dapat menjadi nama bidang tingkat teratas. Subbidang dapat diakses secara langsung, tetapi Anda memerlukan metode pembantu untuk mengakses bidang tingkat atasTipLihat juga, , , Pertimbangkan koleksi dengan dokumen seperti catatan inventaris ini
Subbidang _3 dapat ditanyakan secara langsung
Gunakan dan untuk mengakses nilai bidang 6 tingkat atas
Pembaruan Menggunakan Pipa AgregasiGunakan , , dan dalam tahap untuk memodifikasi dolar ( 1) bidang awalan dalam agregasiPertimbangkan koleksi catatan sekolah seperti
Buat koleksi baru untuk semester musim semi menggunakan bidang untuk memperbarui dolar ( 1) diawali 3
Batasan UmumSelain aturan validasi penyimpanan di atas, ada beberapa batasan umum dalam penggunaan nama bidang yang diawali dengan dolar ( 1). Bidang ini tidak bisa
PeringatanKemungkinan Kehilangan Data Dengan Tanda Dolar ($) dan Periode (. )Ada kemungkinan kecil kehilangan data saat menggunakan dolar ( 1) dengan awalan nama bidang atau nama bidang yang mengandung titik ( 0) jika nama bidang ini digunakan bersama dengan penulisan yang tidak diakui (tulis masalah 9) di server yang lebih lama dari MongoDB 5. 0Saat menjalankan perintah insert, update, dan findAndModify, driver yang ada 5. 0 kompatibel hapus pembatasan penggunaan dokumen dengan nama bidang yang diawali dolar ( 1) atau yang mengandung titik ( 0). Nama bidang ini menghasilkan kesalahan sisi klien di versi driver sebelumnyaPembatasan dihapus terlepas dari versi server yang terhubung dengan driver. Jika 5. 0 driver mengirim dokumen ke server lama, dokumen akan ditolak tanpa mengirim kesalahan PeringatanKekhawatiran Impor dan Ekspor Dengan Tanda Dolar ($) dan Periode (. )Mulai di MongoDB 5. 0, nama bidang dokumen dapat berupa dolar ( 1) diawali dan dapat berisi titik ( 0). Namun, dan mungkin tidak berfungsi seperti yang diharapkan dalam beberapa situasi dengan nama bidang yang menggunakan karakter initidak dapat membedakan antara pembungkus tipe dan bidang yang kebetulan memiliki nama yang sama dengan pembungkus tipe. Jangan gunakan format JSON yang diperluas dalam konteks di mana representasi BSON terkait mungkin menyertakan kunci awalan dolar ( 1). Mekanismenya merupakan pengecualian dari aturan umum iniAda juga larangan menggunakan dan dengan titik ( 0) pada nama kolom. Karena file CSV menggunakan titik ( 0) untuk mewakili hierarki data, titik ( 0) dalam nama bidang akan disalahartikan sebagai tingkat penumpukan
Mengapa kita menggunakan simbol dolar di MongoDB?Sisipkan operasi
. Pembaruan yang membuat dokumen baru selama upsert diperlakukan sebagai sisipan daripada pembaruan untuk validasi nama bidang . Upserts dapat menerima bidang awalan dolar ($ ).
Apa itu $or di MongoDB?MongoDB menyediakan berbagai jenis operator kueri logis dan $or operator adalah salah satunya. Operator ini digunakan untuk melakukan operasi logika ATAU pada larik dua ekspresi atau lebih dan memilih atau mengambil hanya dokumen yang cocok dengan setidaknya satu ekspresi yang diberikan dalam larik.
Apa itu $Add di MongoDB?Menjumlahkan angka atau menambahkan angka dan tanggal . Jika salah satu argumen adalah tanggal, $add memperlakukan argumen lain sebagai milidetik untuk ditambahkan ke tanggal.
Apa gunanya $Set di MongoDB?Operator $set mengganti nilai bidang dengan nilai yang ditentukan . Ekspresi operator $set memiliki bentuk berikut. { $set. { |