Spring 数据 mongo 向数据库插入空值

Spring Data mongo to insert null values to DB

我正在使用 Spring 数据 mongo 向 Mongo、

插入一条记录

这是我的代码 mongoTemplate.save(人,"personCollection");

这是我的人物对象

public class Person implements Serializable {
   int age;
   String address;
   String name;

//Getters and setters including hashcode and equals
}

我的地址在这里为空,在集合中插入记录后,数据只填充了年龄和姓名

我知道 mongodb 将 null 值和 noKey 视为同一事物,但我的要求是甚至填充 address:null 以使模式一致 我如何使用 Spring数据mongo

当前 o/p: {"age":21,"name":"john Doe"}

预期 o/p:{"age":21,"name":"john Doe","address":null}

与 RDBMS 相比,NoSQL DB 的工作方式不同。 文档 {"age":21,"name":"john Doe"} 与 {"age":21,"name":"john Doe";"address":null}

与其将密钥存储为 null 不如完全不存储密钥,这提高了 reads/updates 对数据库的性能。 但是,如果您的用例由于任何原因仍然需要解决 null 问题,则可能会将您的 POJO 转换为 BSONObject,然后将 BSONObject 保留在 MongoDB.

这是示例(但它只是解决问题的方法)

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}*

我已经使用下面的代码解决了这个问题

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

这里我没有使用 BSONObject,而是使用了 Document 对象,它运行良好。

数据库中插入文档

{
    "_id" : ObjectId("some-id"),
    "test1" : "test1",
    "test2" : null,
    "test3" : "test3"
}