我使用以下方法从mongodb集合加载文档列表:
let docs = access pipe ReadStaleOk "mydb" (find (select [] "my_collection") >>= rest)
现在,我想在执行查询后搜索文档列表中的某些属性。我需要这样做,因为我无法在查询中进行过滤,我想一次性加载所有文档,然后在需要时过滤我需要的内容。
赞赏任何指针。
答案 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")
为了更具体,你必须更清楚地了解如何识别好的文件。