如何防止#<objectid ..>使用CongoMongo打破我的地图?</objectid ..>

时间:2012-01-16 15:55:47

标签: mongodb clojure

使用Clojure 1.3.0和CongoMongo 0.1.7进行简单的(fetch-one:my_collection)返回如下内容:

{:_id #<ObjectId 4f10d46c56bad557a7729f95>, 
 :key2 "value2",
 :etc "etc
}

并且'#<ObjectId'打破了一切,但我很惊讶我找不到任何人在任何地方找到这个问题。

实际上我做了一个简单的(type *the_result_above*)我得到了clojure.lang.PersistentArrayMap,同时手动删除#位我正确得到了clojure.lang.PersistentHashMap

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您不是唯一有此问题的人。在我的一个项目中,我通过添加以下函数创建了一个变通方法:

(defn string-id [map]
  (assoc map :_id (str (map :_id))))

使用来自CongoMongo的任何地图提供它,它将用它的字符串表示替换_id并返回更新的地图。