MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

spring-data-mongo - opcjonalne parametry zapytania?

Aby zaimplementować to w logice Boolean, wykonuję następujące czynności i konwersję na operacje dostępne w językach programowania

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

W zwykłym SQL odbywa się to jako

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

W MongoDB odbywa się to poprzez $where

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

Możemy to trochę przyspieszyć używając Mongo Operations zamiast budowania wszystkiego do funkcji kosztem pewnej czytelności. niestety nie działa.

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

Więc to, co masz, to

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

Można to dalej rozszerzyć, aby obsługiwać tablice dla wszystkich klauzul

@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. Używanie kopii zapasowych do naprawy typowych scenariuszy awarii dla MongoDB

  2. Jakie są zasady liczby mnogiej Mongoose (Nodejs)?

  3. Jak mogę częściowo zaktualizować obiekt w MongoDB, aby nowy obiekt nałożył się / scalił z istniejącym?

  4. Kiedy zamknąć połączenie z bazą danych MongoDB w Nodejs

  5. Dlaczego mój schemat nie dodaje wartości domyślnych w tablicach mangusty?