MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

spring-data-mongo - незадължителни параметри на заявката?

За да реализирам това в булева логика, правя следното и преобразувам в операции, които са налични в езици за програмиране

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

В обикновен SQL това се прави като

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

В MongoDB това се прави чрез $where

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

Можем да ускорим това малко като използвате Mongo Operations, вместо да изграждате всичко към функцията за сметка на известна четливост. не работи за съжаление.

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

Така че това, което имате, е

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

Това може да бъде допълнително разширено за обработка на масиви за in/all клаузи

@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. Създаване на многополеви индекси в Mongoose / MongoDB

  2. Какви механизми за сигурност има Meteor?

  3. Как да използвате agregrate в mongodb за $match _id

  4. инсталирайте mongoDB (подчинен процес е неуспешен, излезе с грешка номер 100)

  5. Мониторинг на производителността и здравето на ClusterControl