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

spring-data-mongo - parameter kueri opsional?

Untuk menerapkan ini dalam logika Boolean saya melakukan hal berikut dan konversi ke operasi yang tersedia dalam bahasa pemrograman

:query != null -> field == :query
!(:query != null) || (field == :query)
(:query == null) || (field == :query)

Dalam SQL biasa, ini dilakukan sebagai

where (null = :query) or (field = :query)

Di MongoDB ini dilakukan melalui $where

{ $where: '?0 == null || this.field == ?0' } 

Kita bisa mempercepatnya sedikit dengan menggunakan Operasi Mongo daripada membangun semuanya ke fungsi dengan mengorbankan beberapa keterbacaan. sayangnya tidak berfungsi.

{ $or : [ { $where: '?0 == null' } , { field : ?0 } ] } 

Jadi yang Anda miliki adalah

@Query("{ $or : [ { $where: '?0 == null' } , { field : ?0 } ] }")
List<Something> findAll(String query, Pageable pageable);

Ini dapat diperluas lebih lanjut untuk menangani array untuk klausa dalam/semua

@Query("{ $or : [ { $where: '?0.length == 0' } , { field : { $in : ?0 } } ] }")
List<Something> findAll(String query, Pageable pageable);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. validasi kustom luwak menggunakan 2 bidang

  2. Apa yang harus saya pilih:MongoDB/Cassandra/Redis/CouchDB?

  3. Temukan objek di antara dua tanggal MongoDB

  4. Bagaimana cara menambah bidang di mongodb?

  5. mongoDB:format $dateToString untuk menunjukkan waktu dengan interval 15 menit