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

Spring Data MongoDB - bỏ qua các đối tượng trống

Một điều bạn có thể làm ở đây là viết trình chuyển đổi tùy chỉnh của bạn cho MainDoc :

public class MainDocConverter implements Converter<MainDoc, DBObject> {
    @Override
    public DBObject convert(final MainDoc source) {
        final BasicDbObject dbObject = new BasicDBObject();
        ...
        if(/* validate is subdoc is not null and not empty */) {
            dbOject.put("subDoc", source.getSubDoc());
        }
    }
}

Bạn có thể đăng ký nó trong @Configuration tệp ví dụ:

@Configuration
@EnableMongoRepositories(basePackages = {"package"})
public class MongoConfig {

    private final MongoDbFactory mongoDbFactory;

    public MongoConfig(final MongoDbFactory mongoDbFactory) {
        this.mongoDbFactory = mongoDbFactory;
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {

        final MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, getDefaultMongoConverter());
        return mongoTemplate;

    }

    @Bean
    public MappingMongoConverter getDefaultMongoConverter() throws Exception {

        final MappingMongoConverter converter = new MappingMongoConverter(
                new DefaultDbRefResolver(mongoDbFactory), new MongoMappingContext());
        converter.setCustomConversions(new CustomConversions(Arrays.asList(new MainDocConverter())));

        return converter;
    }

}

Nếu bạn không muốn viết công cụ chuyển đổi tùy chỉnh cho đồ chơi đồ vật của mình, có thể sử dụng công cụ mặc định và sửa đổi một chút.

final Document document = (Document) getDefaultMongoConverter().convertToMongoType(mainDoc);

if(/* validate is null or is empty */) {
    document .remove("subDoc");
}

mongoTemplate().save(document);

Thực ra đó không phải là cách tốt nhất. Như mọi người đã viết, đối tượng trống nên được lưu trữ dưới dạng {} , nhưng công cụ chuyển đổi có thể giúp bạn giải quyết trường hợp của mình.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để xuất / kết xuất cơ sở dữ liệu mongodb?

  2. MongoDB CHỌN COUNT NHÓM THEO

  3. Nhận tổng số trong API kế hoạch Sails JS

  4. $ filter tối đa 2 mức lồng nhau trong mongodb

  5. WiredTiger và cập nhật tại chỗ