3

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做到这一点的更正确的方法?

谢谢 :)

4

1 回答 1

0

一个)

  { _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/

我不是很专业,但我希望我的回答可以帮助你......

于 2013-10-14T13:06:23.290 回答