我做了一个像这样的课程
@BsonDiscrimintor
public class User {
@BsonId
private Integer _id;
// some properties
// getter & setter
}
并注册到编解码器
ClassModel<User> userModel = ClassModel.builder(User.class).enableDiscriminator(true).build();
PojoCodecProvider pojoCodecProvider = PojoCodecProvider.builder().register(userModel).build();
pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(), fromProviders(pojoCodecProvider));
mongoClient = new MongoClient("localhost", MongoClientOptions.builder().codecRegistry(pojoCodecRegistry).build());
mongoDatabase = mongoClient.getDatabase("bbs").withCodecRegistry(pojoCodecRegistry);
当我尝试插入
时public int addOne(User user) {
try {
user.set_id(Db.getNextId("user"));
userCollection.insertOne(user);
} catch (Exception e) {
e.printStackTrace();
}
return user.get_id();
}
但是当我在mongo中找到它时,它的_id字段类型是ObjectID而不是Int32。 但我宣布_id为整数,为什么?
答案 0 :(得分:0)
MongoDB中的默认https://vadzvnik.github.io
类型为id
。它可以在您创建表时更改。它不是由java中的类定义决定的。
实际上,当代码运行时,MongoDB会隐式地将ObjectID
转换为int
。