Spring Data mongo to insert null values to DB

前端 未结 2 1024
囚心锁ツ
囚心锁ツ 2021-01-02 22:16

I am using Spring data mongo to insert a record to Mongo,

here is my code mongoTemplate.save(person,\"personCollection\");

Here is my person object

相关标签:
2条回答
  • 2021-01-02 22:52

    I've solved this problem using the below code

    final Document document = new Document();
    document.put("test1", "test1");
    document.put("test2", null);
    document.put("test3", "test3");
    mongoTemplate.getCollection("your-collection-name").insert(document);
    

    Here instead of using BSONObject, I used Document object and it worked fine.

    Document inserted in DB

    {
        "_id" : ObjectId("some-id"),
        "test1" : "test1",
        "test2" : null,
        "test3" : "test3"
    }
    
    0 讨论(0)
  • 2021-01-02 22:58

    NoSQL DB works in a different way compared to RDBMS. the document {"age":21,"name":"john Doe"} is same as {"age":21,"name":"john Doe";"address":null}

    instead of storing the key's as null better to not store the key at all this improves the performance of your reads/updates against the DB. However, if your usecase still demands to sore null due to whatever the reasons it might be convert your POJO to BSONObject and then persist the BSONObject in the MongoDB.

    Here is the example ( but however it will be only a work around to get the things going)

    BSONObject personBsonObj = BasicDBObjectBuilder.start()
                    .add("name","John Doe")
                    .add("age",21)
                    .add("address",null).get();
    
    
     if you are using spring data mongo use
    
    mongoTemplate.insert(personBsonObj,"personCollection");
    document in the db:
    db.personCollection.findOne().pretty();
    {"age":21,"name":"John Doe";"address":null}*
    
    0 讨论(0)
提交回复
热议问题