sql >> Database teknologi >  >> NoSQL >> MongoDB

spring-data-mongo - valgfri forespørgselsparametre?

For at implementere dette i boolsk logik gør jeg følgende og konverteringen til operationer, der er tilgængelige i programmeringssprog

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

I almindelig SQL udføres dette som

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

I MongoDB gøres dette gennem $where

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

Vi kan fremskynde dette en smule ved at bruge Mongo Operations frem for at bygge alt til funktionen på bekostning af en vis læsbarhed. virker desværre ikke.

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

Så hvad du har er

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

Dette kan udvides yderligere til at håndtere arrays for in/all klausuler

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


  1. Sådan gør du:Administrer HBase-data via Hue

  2. Lagring af indlejrede javascript-objekter i redis - NodeJS

  3. Introduktion til Spring Data MongoDB

  4. Kan jeg gøre to kolonner unikke for hinanden? eller bruge sammensatte primære nøgler i redis?