Mongodb 如何在cl mongo中将元素obj更改为alist?

Mongodb 如何在cl mongo中将元素obj更改为alist?,mongodb,common-lisp,Mongodb,Common Lisp,db.find将返回MongoDB中的文档 我想获取文档的所有元素,然后更改为列表 但是我还没有找到获取元素的函数 我发现元素是文档中的hashmap,它有一个名为elements的访问器 但是,当我在自己的包中使用(elements docTmp)时,它返回没有名为elements的函数。我建议不要深入挖掘文档的内部,而是使用提供的函数mapdoc。您还可以考虑递归解析,以将可能的子文档转换为实用主义。因此,代码可能如下所示: (defgeneric mongo-document->al

db.find将返回MongoDB中的文档

我想获取文档的所有元素,然后更改为列表

但是我还没有找到获取元素的函数

我发现元素是文档中的hashmap,它有一个名为elements的访问器


但是,当我在自己的包中使用
(elements docTmp)
时,它返回没有名为elements的函数。

我建议不要深入挖掘
文档的内部,而是使用提供的函数
mapdoc
。您还可以考虑递归解析,以将可能的子文档转换为实用主义。因此,代码可能如下所示:

(defgeneric mongo-document->alist (doc))

(defmethod mongo-document->alist ((doc cl-mongo:document))
  (let ((alist '()))
    (cl-mongo:mapdoc (lambda (key value)
                       (push
                        (cons
                         key
                         (mongo-document->alist value))
                        alist))
                     doc)
    alist))

(defmethod mongo-document->alist ((obj t))
  obj)