首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YiiMongoDbSuite + 2dsphere不工作

YiiMongoDbSuite + 2dsphere不工作
EN

Stack Overflow用户
提问于 2014-11-25 17:53:33
回答 1查看 36关注 0票数 0

我使用的是YiiMongoDbSuite 1.3.6

代码语言:javascript
复制
                $users = MyModel::model()->findAll(array(
                    'conditions'=>array(
                        'loc'=>array(
                            'near' => array(50,50),
                            'maxDistance' => 1 / 111.12,    
                        ),
                    ),
                ));

添加到EMongoCriteria.php的其他标准

代码语言:javascript
复制
    public static $operators = array(
        ....
        'near'          => '$near',
        'maxdistance'   => '$maxDistance');

返回消息,如

代码语言:javascript
复制
{
    "message": "localhost:27017: can't parse query (2dsphere): { $near: [ -73.951909, 40.610876 ], $maxDistance: 8.999280057595392 }",
    "file": "/home/yura/www/doctor/protected/extensions/YiiMongoDbSuite/EMongoDocument.php",
    "line": 1232
}

此外,还会对字段进行索引

代码语言:javascript
复制
{
        "v" : 1,
        "name" : "2dsphere",
        "key" : {
            "loc" : "2dsphere"
        },
        "ns" : "doctor.users"
    }

在控制台中请求时

代码语言:javascript
复制
db.users.find({loc:{$near:{$geometry: {type:"Point", coordinates: [-73.951909, 40.610876]}, $maxDistance: 1000}}})

返回有效结果

EN

回答 1

Stack Overflow用户

发布于 2014-11-25 18:28:03

耶!看起来挺管用的。我更改了简单查询的格式

代码语言:javascript
复制
     $users = \User::model ()->findAll(array (
        "conditions" => array (
            'loc' => array(
                'near' => array(
                    '$geometry' => array(
                        'type' => 'Point', 
                        'coordinates'=> array(-73.951909,40.610876)
                    )
                ), 
                'maxDistance' => 1000
            )
        )
    ));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27123509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档