http://www.yesodweb.com/book/persistent
中没有任何文档或示例此外,我没有找到任何原始查询的示例(显然, rawQuery 不能与 persistent-mongoDB 一起使用)。 我需要使用地理选择器( $ near ),这就是为什么我不能只调用 selectList 。
但是,有一种方法可以使用 Database.MongoDB 执行我想要的操作:
rawrecs <- runDB $ find (select
["loc" =: [
"$near" =: [
"$geometry" =: [
"type" =: ("Point"::String),
"coordinates" =: [ (28.483334::Double),(49.233334::Double) ]
],
"$maxDistance" =: (1000::Int)
]
]] "points") { limit = 10 } >>= rest
mapM_ (liftIO . putStrLn . show) rawrecs
然后将查询结果转换为持久实体。 是的,它有效,但看起来有点棘手。
有没有人知道使用persistent-mongoDB更正确的方法?
谢谢:)
答案 0 :(得分:0)
A)
{ _id : ObjectId(...),
name : "...",
addresses : [ {
context : "home" ,
loc : [ 55.5, 42.3 ]
} ,
{
context : "home",
loc : [ -74 , 44.74 ]
}
]
}
b)中
db.records.ensureIndex( { "addresses.loc": "2d" } )
c)中
db.places.find( { loc :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates : [ [
[ 0 , 0 ] ,
[ 3 , 6 ] ,
[ 6 , 1 ] ,
[ 0 , 0 ]
] ]
} } } } )
有关详细信息,请访问
http://docs.mongodb.org/manual/administration/indexes-geo/
我不是很专家,但我希望我的回答可以帮助你...