首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >monger向量中的关键字项被转换为字符串。

monger向量中的关键字项被转换为字符串。
EN

Stack Overflow用户
提问于 2017-08-14 15:23:56
回答 2查看 200关注 0票数 0

使用monger,我正在编写一个文档,其中包含一个带有关键字项的向量,其集合如下

代码语言:javascript
复制
(monger.collection/insert-and-return db 
                                    "test-coll" {:_id 1 :some-vector [:a-keyword]})

如预期的那样返回

代码语言:javascript
复制
{:_id 1, :some-vector [:a-keyword]}

但是,如果我获取特定的文档,比如

代码语言:javascript
复制
(monger.collection/find-map-by-id db "test-coll" 1)

关键字已更改为字符串。

代码语言:javascript
复制
{:_id 1, :some-vector ["a-keyword"]}

这是预期的行为吗?如果是的话,原因何在?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 15:32:33

这是预期的行为,因为mongo数据库存储不支持关键字;它本质上是jsondblist

您必须使用monger.conversion/from-db-object手动将值转换回关键字。

票数 3
EN

Stack Overflow用户

发布于 2017-08-14 18:02:17

方法insert-并返回返回您传递给它的相同数据以及创建的文档id。

代码语言:javascript
复制
(defn insert-and-return 
    [db coll _]
 ...
  (let [doc (merge {:_id (ObjectId.)} document)]
   (insert db coll doc concern)
   doc))

方法find- map -by-id只从mongodb获取数据,并使用函数-db-object将原始数据转换为clojure数据结构,其中只有映射的键才会被关键字编码。您的地图的价值将不会被关键字化。

代码语言:javascript
复制
(from-db-object ^DBObject (find-one db coll ref) true)

;;where
(defprotocol ConvertFromDBObject
  (from-db-object [input keywordize))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45677891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档