如何使用Java获取BigDecimal值大于某个值的mongo db记录

时间:2020-07-25 17:29:09

标签: java mongodb spring-boot

我无法使用java中的以下内容来获取数量(bigdecimal值)大于0的mongo db记录。

    Query query=new Query();
    query.addCriteria(Criteria.where("amount").gt(0));

1 个答案:

答案 0 :(得分:0)

  • 似乎首先您必须转换现有文档mongodb才能将其存储为Decimal128
   db.xxx.find({ }) 
  .forEach( function (x) { 
    x.price = new NumberDecimal(x.amount); 
    db.xxx.save(x); 
  });
  • 然后您需要写一个Converter
    @Bean
    CustomConversions customConverions() {
     Converter<Decimal128, BigDecimal> decimal128ToBigDecimal 
                    = new Converter<Decimal128, BigDecimal>() {
        @Override
        public BigDecimal convert(Decimal128 s) {
            return s==null ? null : s.bigDecimalValue();
        }
      };

      Converter<BigDecimal, Decimal128> bigDecimalToDecimal128 
                    = new Converter<BigDecimal, Decimal128>() {
        @Override
        public Decimal128 convert(BigDecimal s) {
            return s==null ? null : new Decimal128(s);
        }
      };

      return new CustomConversions(Arrays.asList(decimal128ToBigDecimal, 
                                 bigDecimalToDecimal128));
    }