繁体   English   中英

如何在Yesod上使用$ all运算符在mongo上找到元素?

[英]How can I find element on mongo using $all operator with Yesod?

问题:

我有一个人模型可以从检索:

Person
    name Text
    favoriteFoods [Text]

这是我的功能:

getPersonsByFoods :: [Text] -> DB [Entity Person]
getPersonsByFoods foods = selectList [PersonFavoriteFoods ??? foods] []

我看了一下查询过滤器组合器,但没有找到任何可以帮助我处理列表的函数。 我需要一种containsAll函数。

这应该是最终的mongo查询:

PersonModel.find({ favouriteFoods: { "$all" : ["sushi", "burger"]} });

元:

- yesod >=1.6 && <1.7
- yesod-core >=1.6 && <1.7
- yesod-static >=1.6 && <1.7
- persistent >=2.9 && <2.10
- persistent-mongoDB >=2.8 && <2.9
- mongoDB
- persistent-template >=2.5 && <2.9

题:

如何使用Yesod获得此结果?

我认为您可以使用<-。

getPersonsByFoods :: [Text] -> DB [Entity Person]
getPersonsByFoods foods = selectList [PersonFavoriteFoods <-. foods] []

或者,如果您也使用esqueleto ,则可以:

getPersonsByFoods :: [Text] -> DB [Entity Person]
getPersonsByFoods foods = selectList [PersonFavoriteFoods `in_` valList foods] []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM