2017-12-30 2 views
0

나는 수업이자바 MongoDB를 뽀조 사용자 ID가 유형

@BsonDiscrimintor 
public class User { 
    @BsonId 
    private Integer _id; 
    // some properties 
    // getter & setter 
} 

좋아하고 나는 그것을 발견 할 때 나는

public int addOne(User user) { 
    try { 
     user.set_id(Db.getNextId("user")); 

     userCollection.insertOne(user); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return user.get_id(); 
} 

를 삽입하려고하지만 때

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); 

코덱 등록 mongo에서 _id 필드 유형은 ObjectID이지만 Int32는 아닙니다. 그러나 정수로 _id를 선언했습니다. 이유는 무엇입니까?

답변

0

MongoDB의 기본 유형은 ObjectID입니다. 테이블을 만들 때 변경 될 수 있습니다. Java에서 정의한 클래스에 의해 결정되지는 않습니다.

실제로 MongoDB는 코드 실행시 암시 적으로 intObjectID으로 변환합니다.