MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Spring Data MongoDB - abaikan objek kosong

Satu hal yang dapat Anda lakukan di sini adalah menulis konverter khusus Anda untuk 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());
        }
    }
}

Anda dapat mendaftarkannya di @Configuration file misalnya:

@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;
    }

}

Jika Anda tidak ingin menulis konverter khusus untuk objek, mainan dapat menggunakan yang default dan dan memodifikasinya sedikit.

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

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

mongoTemplate().save(document);

Sebenarnya itu bukan cara terbaik. Seperti yang ditulis orang, objek kosong harus disimpan sebagai {} , tetapi konverter dapat membantu kasus Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara mencadangkan dan memulihkan basis data Mongodb

  2. Mendapatkan kesalahan saat memasukkan ke Koleksi Meteor

  3. Temukan titik dekat LineString di mongodb diurutkan berdasarkan jarak

  4. cara memperbarui nomor urut di mongodb dengan aman

  5. MongoDB+Java:Kredensial hilang dalam dokumen pengguna