Haskell MongoDB,无法获取_id字段

时间:2014-04-10 14:02:46

标签: mongodb haskell yesod

与Yesod和MongoDB混淆。我直接使用MongoDB库,而不是使用Persistent库。

我使用this simple Yesod file server并将其转换为使用MongoDB。我正在尝试获取文档的_id字段,但我没有得到任何结果。

我的文档有4个字段:" _id"," filename"," mime"和" content"。我可以使用!?运算符来获取除_id之外的任何字段,它返回Nothing。

如果doc是我的某个文档,而我$(logDebug) $ show doc,我会将文档打印到控制台,我可以看到所有4个字段都已设置,包括_id字段。

如果我$(logDebug) $ show $ doc !? "_id",我会Nothing

如果我$(logDebug) $ show $ head doc,我会像_id: 12345

那样获得_id字段

$(logDebug) $ show $ doc !? "filename"会给我一个名字,比如file.txt

我在文档中没有看到_id被特别对待的内容,所以最近有什么意思?

1 个答案:

答案 0 :(得分:2)

看起来你试图在ghci中使用这段代码。因为没有ghci扩展的默认规则它是不可编译的。 !?使用类型类Val并显示使用Show,因此doc !? "_id"返回Val a => Maybe ashow需要Show a => a

您应该声明期望的!?类型,例如:$(logDebug) $ show $ ((doc !? "_id") :: Maybe ObjectId)