프로그래밍

vert.x mongodb 설정할 때, useObjectId = true/false 시 차이점

약올랑 2016. 2. 17. 17:32

vert.x 3.0에서 MongoClient를 사용해 도큐먼트를 _id값 없이 저장할 경우, useObjectId 사용 유무에 따라 _id의 타입이 달라진다.

몽고디비에서 쉘로 텅빈 도큐먼트를 저장시키면 _id는 ObjectId 타입으로 저장된다. 

코드에서도 텅빈 도큐먼트를 저장했을 때에도 동일하게 동작했으면 좋겠다는 판단이 들어, 

vert.x MongoClient의 디폴트 값은 false지만, useObjectId = true를 해두면서, 정리해본다.


실험 결과

JAVA CODE

// Json 타입으로 값을 설정 mongoClient = MongoClient.createShared(vertx, { "host" : "127.0.0.1", "port" : 27017, "db_name":"tete", "useObjectId" : true }); // 텅빈 도큐먼트를 저장 mongoClient.save("someCol", new JsonObject(), resultHandler->{});

몽고디비에서 쉘명어로 확인

db.someCol.find({}) # useObjectId = true하고 저장시, ObjectId 타입 { "_id" : ObjectId("56c42e5a5ea7f0193c6ca2e7") } # useObjectId = false하고 저장시, String 타입 { "_id" : "56c42ec85ea7f025e0c9fa8e" }