MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग डेटा MongoDB - खाली वस्तुओं पर ध्यान न दें

एक चीज जो आप यहां कर सकते हैं वह है 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());
        }
    }
}

आप इसे @Configuration . में रजिस्टर कर सकते हैं उदाहरण के लिए फ़ाइल:

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

}

यदि आप अपने ऑब्जेक्ट के लिए एक कस्टम कनवर्टर नहीं लिखना चाहते हैं तो खिलौना डिफ़ॉल्ट एक का उपयोग कर सकता है और इसे थोड़ा संशोधित कर सकता है।

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

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

mongoTemplate().save(document);

वास्तव में यह सबसे अच्छा तरीका नहीं है। जैसा कि लोगों ने लिखा है खाली वस्तु को {} . के रूप में संग्रहित किया जाना चाहिए , लेकिन कनवर्टर आपके मामले में आपकी मदद कर सकता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. yii2 mongodb के साथ लॉगिन या साइनअप के लिए काम नहीं कर रहा है

  2. कैसे (ठीक से) कुबेरनेट्स पर मोंगोडीबी को तैनात करें और इसे किसी अन्य पॉड/नौकरी से एक्सेस करें?

  3. MongoDB में जन्मतिथि स्टोर करने का सबसे अच्छा तरीका क्या है?

  4. Node.js + Mongoose स्थानीय रूप से काम करता है, लेकिन Heroku पर नहीं

  5. MongoMapper maxDistance के पास - Mongo::OperationFailure:भौगोलिक मान संख्याएँ होनी चाहिए: