Jika Anda telah bekerja dengan Spring Data JPA untuk waktu yang lama - Anda mungkin mengenal metode kueri turunan Show
Mereka adalah cara yang bagus dan cepat untuk melepaskan beban menulis kueri ke Spring Data JPA hanya dengan mendefinisikan nama metode Dalam skenario hipotetis ini - kami telah mendefinisikan 6 untuk kelas 7, yang memiliki atribut bernama 8 bertipe 9Pengingat. 6 hanyalah 1 khusus yang cocok untuk Mongo, yang pada gilirannya merupakan 2 khususAlih-alih menerapkan metode ini dalam implementasi layanan 3 - Spring Data JPA menghasilkan kueri secara otomatis dengan nama metode. Ini akan menghasilkan kueri yang mengembalikan daftar semua catatan 7, dengan 8 yang cocokSetelah metode dipanggil dengan beberapa input, permintaan berikut dibuat
Catatan. Untuk melihat output ini, Anda harus menyetel level debugging dari 6 ke 7 _
Namun, mereka menjadi sangat sulit untuk dibuat ketika kueri kompleks diperlukan _Dan ini hanya untuk dua parameter. Apa yang terjadi jika Anda ingin membuat kueri untuk 5 parameter?
Ini adalah titik ketika Anda kemungkinan besar ingin memilih untuk menulis kueri Anda sendiri. Ini dapat dilakukan melalui anotasi _8
Saat metode beranotasi dipanggil - kueri dari dalam 8 anotasi menyala dan mengembalikan hasilnyaCatatan. Panduan ini akan mencakup Spring Data JPA digabungkan dengan database Mongo, dan akan menggunakan kueri yang berlaku untuk MongoDB
Model Domain dan RepositoriMari segera tentukan model _7 yang akan kita gunakan sebagai 4 untuk repositori kita. Untuk memamerkan berbagai operasi dengan benar, seperti menggunakan operator 5 dan 6 Mongo, - kita akan memiliki beberapa properti berbedaMongoDB berurusan dengan ID tipe 9 atau 8. Terserah Anda untuk memilih mana yang akan Anda gunakan - dan 8 dapat dengan mudah diubah menjadi Strings dan sebaliknya sehingga tidak membuat banyak perbedaanBagaimanapun, mari kita tentukan 3 sederhana untuk model ini
Saat ini kosong, tetapi berfungsi dengan baik untuk operasi CRUD, mengingat fakta bahwa 6 adalah turunan dari antarmuka 2. Selain itu, paging dan penyortiran didukung di luar kotak
Memahami Anotasi @QueryAnotasi 8 cukup sederhana dan lugas
Setelah metode _5 dipanggil, hasilnya dikembalikan. Perlu diingat bahwa selama waktu kompilasi, Spring Boot tidak mengetahui jenis kueri apa yang akan dikembalikan sebelumnya. Misalnya, jika mengembalikan beberapa hasil, dan Anda hanya memiliki satu nilai pengembalian yang diharapkan - pengecualian akan dilemparkan selama runtime
Anda dapat memiliki kueri tetap atau dinamis di sini. Misalnya, Anda dapat menyederhanakan nama metode dari sebelumnya dan mendelegasikan parameter yang berantakan ke anotasi 8
Pada contoh pertama, kami memiliki kumpulan parameter tetap, seperti selalu mencari buku aktif meskipun klien tidak menentukannya. Ini merupakan keunggulan dibandingkan metode kueri turunan karena nama metode bersih. Sebagai alternatif, Anda dapat memberikan parameter ke metode yang kemudian dapat disuntikkan ke dalam anotasi 8 itu sendiri
Bagi mereka yang mungkin tidak sepenuhnya mengenal struktur kueri MongoDB, mari kita pelajari terlebih dahulu sebelum menggali parameter metode ekstraksi dan menggunakannya dalam kueri Struktur Kueri MongoDBMongoDB memiliki struktur kueri yang cukup mudah, meskipun berbeda dari struktur SQL. Jika Anda belum pernah menggunakan MongoDB sebelumnya dan jika Anda terbiasa dengan basis data relasional, sebaiknya segarkan memori Anda pada struktur ini Semua kueri Mongodb terjadi di antara tanda kurung kurawal
Kondisi kesetaraan standar mengikuti pola sederhana
Misalnya, kami dapat meminta buku kami sebagai _0Kueri ini memeriksa semua _7 dokumen dalam koleksi, yang sesuai dengan 8 dan 0Number`. Anda juga dapat memasukkan operator ke dalam campuran di sini _1Kueri ini memeriksa apakah _8 adalah salah satu dari nilai yang diberikan. Beberapa operator yang didukung adalah 2, 3, 4, 5, 6, 7, 8, 9 dan 0, meskipun ada beberapa yang perlu diketahui. Misalnya, inilah kueri yang mencari semua dokumen oleh salah satu dari dua penulis, dengan jumlah halaman antara 400 dan 500, tidak dirilis pada 2018 dan 2019 _2Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu Ini adalah sebagian besar pengetahuan kueri yang Anda perlukan untuk banyak kueri, tetapi jangan lewatkan untuk benar-benar mengenal MongoDB sebelum serius bekerja dengannya. Selain itu, Anda mungkin juga ingin bekerja dengan agregasi
Mereferensikan Parameter Metode Bernama dan PosisiDengan pengetahuan MongoDB fungsional di bawah ikat pinggang kita - mari kita lihat bagaimana kita bisa mereferensikan parameter metode. Anda dapat mereferensikannya baik melalui namanya, dicampur dengan anotasi 1 dan ekspresi SpEL, yang lebih bertele-tele tetapi lebih fleksibel, atau, melalui argumen posisional, yang biasanya merupakan pendekatan yang lebih disukai karena kesederhanaannya _3Pada pendekatan pertama, argumen posisi pertama, 2, sesuai dengan argumen pertama dalam metode, dan nilai argumen akan digunakan sebagai pengganti 2. Ini berarti bahwa Anda harus melacak posisi dan tidak mencampuradukkannya, jika tidak, MongoDB akan gagal secara diam-diam dan tidak akan mengembalikan hasilnya, mengingat fleksibilitas skema, karena Anda mungkin juga memiliki properti ituTip. Jika Anda telah mengaktifkan _7 sebagai tingkat pencatatan Anda - Anda akan dapat melihat kueri yang dikirim ke Mongo di log. Anda dapat menyalin-tempel kueri itu ke MongoDB Atlas untuk memeriksa apakah kueri mengembalikan hasil yang benar di sana, dan memverifikasi apakah Anda secara tidak sengaja telah mengacaukan posisinya. Kemungkinannya adalah - kueri Anda baik-baik saja, tetapi Anda baru saja mencampuradukkan posisinya, sehingga hasilnya kosongDalam pendekatan kedua, kami menggunakan ekspresi SpEL untuk mencocokkan parameter yang disediakan dengan parameter 8. Anda tidak perlu mendefinisikannya dalam urutan tertentu karena mereka akan dicocokkan dengan nama - bukan posisi. Padahal, masih masuk akal untuk menjaga posisi seragam untuk keterbacaan APIMari kita tentukan titik akhir sederhana di pengontrol REST untuk menguji metode ini _4Setelah disiapkan, mari kirim permintaan 6 (atau arahkan ke URL ini melalui browser) _5Catatan. Untuk jawaban yang bagus, ingatlah untuk mengubah 7 Jackson menjadi 8 di 9 Anda _6Hasil Paging dengan Halaman dan PageablePenyortiran dan paging didukung di luar kotak, karena 6 memperluas 1. Seperti biasa, prosesnya adalah mengembalikan tipe _2, dan menyediakan 3 ke metode itu sendiri _7Saat memanggil metode, Anda perlu menyediakan objek 3 yang valid, yang dapat dibuat dengan membuat permintaan halamanDi sini, kami membuat _5 untuk halaman pertama (pengindeksan berbasis 0) dengan ukuran 6 dokumen. Jika ada 10 dokumen pas di database, 5 halaman akan dikembalikan, mulai dari 7. Anda harus membuatMari cetak seluruh objek _2 yang kembali, di mana 9 berisi hasil kueri, dan beberapa properti lainnya juga ada terkait dengan halaman. Di sinilah Anda dapat melihat bagaimana hasilnya diatur dalam halaman - i. e. penyortiran, ukuran halaman, nomor halaman, dll _8Jika Anda hanya ingin menampilkan hasilnya, Anda dapat mengakses 0 data dan 1 ke daftar _9Untuk memperluas fungsi ini dengan penyortiran, yang harus Anda lakukan adalah menyediakan objek 2 ke 5, yang menyatakan properti mana yang ingin Anda urutkan dan urutannya _0Di sini, kami telah mengurutkan hasil berdasarkan nama menaik dan nomor halaman menaik. Saat menyortir melalui beberapa properti, Anda dapat merangkai sejumlah properti melalui 4 dan memasok 5 lainnyaMetode _6 adalah metode default yang ada di antarmuka 6, dan menerima instance 2 dan 3, dan dapat dijalankan tanpa mereka juga. Di sini, kami memanfaatkannya untuk melakukan kueri menggunakan 3 yang baru _1Properti pertama diutamakan di sini. Meskipun buku kedua memiliki halaman lebih sedikit dari yang pertama, dan kami telah mengurutkan berdasarkan nomor halaman menaik, pengurutan berdasarkan nama menghasilkan urutan ini. Jika pesanan berdasarkan nama tidak jelas, properti kedua akan dipotong Query dengan OperatorSemua yang dikatakan, mari buat ulang kueri dari awal artikel _2Ini semudah menyalin-menempel kueri ini ke dalam anotasi 8. Mengetahui kami memiliki tiga buku, dan yang satu panjangnya 652 halaman, dan salah satunya diterbitkan pada tahun 2019 - kami berharap hanya satu buku yang dikembalikan ke sini - "Alam Semesta Matematika Kita" oleh Max TegmarkMari kita uji apakah itu benar _3Atau, untuk implementasi yang lebih bersih _4Catatan. Saat menyediakan array data, seperti 02 dan 03 - tidak perlu mendefinisikan parameter sebagai array dalam kueri - 04. Ini akan membuat array di dalam array. Anotasi 8 akan secara otomatis mengonversi input Anda menjadi kueri yang tepatMari perbarui titik akhir dan berikan beberapa data Dan ketika kami mengirim permintaan untuk itu _5Seperti jarum jam KesimpulanDalam panduan ini, kami telah melihat anotasi 8 dalam konteks Spring Data MongoDBAnotasi memungkinkan Anda menentukan kueri Anda sendiri, asli dan JPQL, untuk berbagai basis data, relasional dan non-relasional. Kami telah memilih untuk menggunakan kueri Mongo asli untuk berinteraksi dengan database non-relasional. Setelah mendefinisikan model dan repositori untuknya, kami menjelajahi struktur kueri yang digunakan oleh MongoDB, dan cara kerja anotasi 8 secara umum. Ini diikuti dengan mereferensikan parameter metode bernama dan posisional, paging dan menyortir hasil kueri, serta cara menggunakan operator MongoDB untuk membuat kueri yang lebih kompleks
Bagaimana cara mendapatkan catatan antara dua tanggal di MongoDB?Gunakan operator gteandlt untuk menemukan objek di antara dua tanggal di MongoDB.
Bagaimana cara menanyakan berdasarkan tanggal di MongoDB?MongoDB date akan mengembalikan tanggal saat ini sebagai objek tanggal, dan mongo Shell akan membungkus objek tanggal dengan isolate helper di MongoDB. Kita dapat menentukan tanggal tertentu dengan meneruskan tanggal sebagai string tanggal ISO-8601, dan string ini digunakan dengan rentang 0 hingga 9999 ke fungsi date() baru di MongoDB.
Bagaimana cara mendapatkan data antara dua tanggal di Spring Boot?Kita bisa mendapatkan tanggal antara dua tanggal dengan pemanggilan metode tunggal menggunakan metode dedicated dateUntil dari kelas LocalDate . DateUntill mengembalikan Aliran tanggal yang diurutkan secara berurutan mulai dari objek tanggal yang metodenya dipanggil ke tanggal yang diberikan sebagai argumen metode.
Bagaimana cara menanyakan MongoDB berdasarkan tanggal di Jawa?Contoh kode Java berikut digunakan untuk menanyakan bidang tanggal MongoDB, yang Anda lihat nilainya sebagai, e. g. , Tanggal ISO("2020-09-23T10. 42. 16. 983Z") di shell mongo. Dan, tanggal ini disimpan di database MongoDB sebagai tipe Tanggal. FormatTanggaldateFormat = new SimpleDateFormat("yyyy-MM-dd H. m. s"); Tanggal dariTanggal = dateFormat . |