2012-07-13 9 views
7

Monger 라이브러리를 사용하여 Clojure에서 Mongo 데이터베이스에 액세스 중입니다. 나를 귀찮게하는 한 가지는 ObjectId 인스턴스와 문자열 사이를 앞뒤로 전환하는 것입니다.문자열과 자동으로 Mongodb ObjectId 매핑하기

예를 들어이 코드 (mc/find-maps "posts" {})_id 항목의 값이 ObjectId 클래스 인지도로 평가되지만 내 앱에서는 단순히 내가 알고있는 문자열로 사용하는 것이 더 유용하다는 것을 알게됩니다 고유합니다.

id 매개 변수에 대해 String 객체를 사용하는 (mc/find-map-by-id "posts" (new ObjectId id))과 같은 표현을 사용하려면 ObjectId 인스턴스를 생성해야합니다.

_id의 값을 응용 프로그램의 문자열과 몽고 쪽의 ObjectId 사이에서 자동으로 그리고 투명하게 변환하는 방법이 있습니까? 사용 가능한 경우 ID의 문자열 표현이있는 맵을 작성하고 그 반대로는 uid의 매개 변수로 사용될 때 ID t 오브젝트 ID의 문자열 표현을 변환하는 옵션이 있습니까?

그렇지 않은 경우 사용할 수있는 다른 전략은 무엇입니까?

답변

2

나는이 점에서 당신에게 고통을 말합니다. 당신이 항상 앞뒤로 변환해야하기 때문에 ObjectID는 귀찮다. 잊어 버리면 버그를 잡기가 어렵다.

가장 적합한 방법은 드라이버 코드를 자동으로 변환하는 것입니다. 따라서 find, findOne, insert를 씬 랩퍼 (thin wrapper)로 대체하십시오.이 래퍼는 타입을 살펴보고 들어 오거나 나갈 때마다 자동으로 변환합니다.

불행히도, 나는 쉬운 방법이 있다고 생각하지 않습니다.

관련 문제