sql >> データベース >  >> NoSQL >> MongoDB

MongoDB-ドットをエスケープする'。'マップキーで]

    Spring Data MongoDBを使用すると、次のインスタンスが取得されます:org.springframework.data.mongodb.core.convert.MappingMongoConverter mapKeyDotReplacementがあります デフォルトではnullに設定されているため、例外が発生します。

    org.springframework.data.mongodb.core.convert.MappingMongoConverterの独自のインスタンスを作成する必要があります または、プロバイダーセッターメソッドを使用して既存のインスタンスを変更するだけです:

    /**
     * Configure the characters dots potentially contained in a {@link Map} shall be replaced with. By default we don't do
     * any translation but rather reject a {@link Map} with keys containing dots causing the conversion for the entire
     * object to fail. If further customization of the translation is needed, have a look at
     * {@link #potentiallyEscapeMapKey(String)} as well as {@link #potentiallyUnescapeMapKey(String)}.
     * 
     * @param mapKeyDotReplacement the mapKeyDotReplacement to set
     */
    public void setMapKeyDotReplacement(String mapKeyDotReplacement) {
        this.mapKeyDotReplacement = mapKeyDotReplacement;
    }
    

    MongoDBでは、ドットは常に特殊文字として扱われるため、ドットを回避すると、将来的に他の頭痛の種を減らすことができます。

    編集:デフォルトのMappingMongoConverterを上書きするには 次のBean宣言を追加します。

      @Bean
      public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory) throws Exception {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
        MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
        mongoConverter.setMapKeyDotReplacement(".");
    
        return mongoConverter;
      }
    


    1. Redis接続ECONNREFUSED127.0.0.1:6379

    2. Monogodbのフィールド名で製品グループを賢く数える方法は?

    3. MongoDB Aggregation Framework-日付範囲で照合し、日でグループ化し、各日の平均を返す方法は?

    4. 日付間の基本的なクエリ$gte、$lteなど