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' } 
    

    これを少し高速化できます 読みやすさを犠牲にして関数にすべてを構築するのではなく、MongoOperationsを使用する。残念ながら動作しません。

    { $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. MongoDB forEach()

    3. モジュール'socket.io/node_modules/redis'が見つかりません

    4. MongoDBプロパティ名を短縮することは価値がありますか?