MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

spring-data-mongo - tham số truy vấn tùy chọn?

Để thực hiện điều này trong logic Boolean, tôi thực hiện như sau và chuyển đổi sang các hoạt động có sẵn trong ngôn ngữ lập trình

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

Trong SQL thuần túy, điều này được thực hiện dưới dạng

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

Trong MongoDB, điều này được thực hiện thông qua $ where

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

Chúng tôi có thể tăng tốc quá trình này một chút bằng cách sử dụng Thao tác Mongo thay vì xây dựng mọi thứ thành chức năng với chi phí có thể đọc được. Rất tiếc, không hoạt động.

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

Vì vậy, những gì bạn có là

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

Điều này có thể được mở rộng hơn nữa để xử lý các mảng cho trong / tất cả các mệnh đề

@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. Đếm trong kho lưu trữ MongoDB của Spring Data

  2. Người theo dõi - thiết kế cơ sở dữ liệu mongodb

  3. Lên lịch công việc Node.js năm phút một lần

  4. Công bố ClusterControl 1.4.2 - Phiên bản DevOps

  5. Làm thế nào để đạt được khả năng hoàn vốn trong các giao dịch trong mongo?