将Mongodb ObjectId自动映射到字符串或从字符串映射

Gor*_*vic 7 clojure mongodb monger

我正在使用Monger库从Clojure访问Mongo数据库.令我烦恼的一件事是在ObjectId实例和字符串之间来回切换.

例如,此代码(mc/find-maps "posts" {})将使用_id条目值设置为ObjectId类的实例来评估映射,而在我的应用程序中,我发现将它作为字符串更有用,我知道它是唯一的.

另一方面,对于这样的表达式:(mc/find-map-by-id "posts" (new ObjectId id))我在其中使用String对象作为id参数,我必须使用它来构造一个实例ObjectId.

有没有办法使_id应用程序中的字符串和mongo端的ObjectId之间的转换值自动且透明地转换?某种选项,在启用时,会创建带有ids字符串表示的地图,反之亦然,在用作查询中的参数时会转换ids t对象ID的字符串表示形式?

如果没有,还有哪些其他策略?

Bra*_*d C 1

在这一点上我和你一样痛苦。取回 ObjectID 很烦人,因为您总是必须来回转换,如果您忘记了,那么就很难发现错误。

您最好的选择可能是包装驱动程序代码以自动进行转换。因此,用一个薄包装器替换 find、findOne、insert,该包装器会查看类型并自动进行转换,无论您是进入还是退出。

不幸的是,我认为没有更简单的方法。