从mongodb搜索[Document]列表

时间:2018-01-28 16:39:31

标签: mongodb haskell filter

我使用以下方法从mongodb集合加载文档列表:

let docs = access pipe ReadStaleOk "mydb" (find (select [] "my_collection") >>= rest)

现在,我想在执行查询后搜索文档列表中的某些属性。我需要这样做,因为我无法在查询中进行过滤,我想一次性加载所有文档,然后在需要时过滤我需要的内容。

赞赏任何指针。

1 个答案:

答案 0 :(得分:1)

类型String -> String -> Document的函数将从两个字符串构造一个新文档。在构建函数[Document] -> t Document或我认为您可能想要MonadIO m => Document -> m (Maybe Document)的内容时,这并不会对我有所帮助。

首先,请记住文档只是字段列表:

type Document = [Field]
data Field = Label := Value
type Label = Text
data Value = ... a big sum type like Aeson's value.

您还没有告诉我们您要搜索哪些属性,因此我们假设您可以编写函数goodDocument :: [Field] -> Bool。然后你可以简单地应用这个功能:

docs <- filter goodDocument <$> rest =<< access pipe ReadStaleOk "mydb" (find (select [] "my_collection")

为了更具体,你必须更清楚地了解如何识别好的文件。