我使用的是YiiMongoDbSuite 1.3.6
$users = MyModel::model()->findAll(array(
'conditions'=>array(
'loc'=>array(
'near' => array(50,50),
'maxDistance' => 1 / 111.12,
),
),
));添加到EMongoCriteria.php的其他标准
public static $operators = array(
....
'near' => '$near',
'maxdistance' => '$maxDistance');返回消息,如
{
"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
}此外,还会对字段进行索引
{
"v" : 1,
"name" : "2dsphere",
"key" : {
"loc" : "2dsphere"
},
"ns" : "doctor.users"
}在控制台中请求时
db.users.find({loc:{$near:{$geometry: {type:"Point", coordinates: [-73.951909, 40.610876]}, $maxDistance: 1000}}})返回有效结果
发布于 2014-11-25 18:28:03
耶!看起来挺管用的。我更改了简单查询的格式
$users = \User::model ()->findAll(array (
"conditions" => array (
'loc' => array(
'near' => array(
'$geometry' => array(
'type' => 'Point',
'coordinates'=> array(-73.951909,40.610876)
)
),
'maxDistance' => 1000
)
)
));https://stackoverflow.com/questions/27123509
复制相似问题