如何让MongoDB自动调用generateIdIfAbsentFromDocument?

时间:2015-10-01 13:35:07

标签: java mongodb mongodb-java

我有一个CollectibleCodec<Thing>用于与MongoDB数据库连接:

public class ThingCodec implements CollectibleCodec<Thing> { /* ... */ }

// ...

MongoCollection<Thing> things = database
    .withCodecRegistry(CodecRegistries.fromCodecs(new ThingCodec()))
    .getCollection("things", Thing.class);

通过这个编解码器读取和编写Thing的工作正常,但有一个问题:ThingCodec.generateIdIfAbsentFromDocument(Thing)方法永远不会被调用,所以除非我没有ID,所以这些东西都保存在数据库中在保存之前设置ID。有没有办法配置MongoDB驱动程序在我插入或更新集合中的项目时自动调用此方法?

1 个答案:

答案 0 :(得分:0)

当然,一种简单的方法是在public class ThingCodec implements CollectibleCodec<Thing> { @Override public void encode(BsonWriter writer, Thing value, EncoderContext context) { generateIdIfAbsentFromDocument(value); // Do encoding } // ... } 本身中执行此操作:

$block['content'] = $output;