私は PHP と MongoDB を使用して痛みを感じ、自分の位置に最も近いポイントを取得しています。しかし、私には問題があります。
mongo コンソールを使用すると値が返されますが、PHP コードで実行すると null オブジェクトが返されます。
PHP コード:
$connection = new MongoClient( "mongodb://localhost" );
$db = $connection->collection;
$collection = $db->user_location;
// There are many differnt queries (by token, by email...)
if (isset($_GET['email'])) {
$query = array(
//'email' => array( '$neq' => $_GET['email']),
'loc' => array(
'$near' => array(
'lon' => floatval($_GET['longitude']),
'lat' => floatval($_GET['latitude']),
'$maxDistance' => intval($_GET['distance']))));
}
$maxDistance = $_GET["distance"];
$lon = $_GET['longitude'];
$lat = $_GET['latitude'];
$cursor = $collection->find($query);
if ($cursor) {
echo json_encode($cursor);
} else {
echo "{ 'status' : 'false' }";
}
これは mongo コンソールの使用例です: db.user_location.ensureIndex({ loc : "2d"} )
db.user_location.find() { "_id" : ObjectId("51dbe817617c6df061000000"), "email" : "zgz", "loc" : { "lon" : -0.88588498, "lat" : 41.68035677 }, "date" : "Tue, 09 Jul 2013 06:38:15" } db.user_location.find({"loc": {"$near": {"lon":-0.88588498,"lat":41.68035677}, "$maxDistance": 99}}) { "_id" : ObjectId("51dbe817617c6df061000000"), "email" : "zgz", "loc" : { "lon" : -0.88588498, "lat" : 41.68035677 }, "date" : "Tue, 2013 年 7 月 9 日 06:38:15" }
PHP コードで同じ値を使用すると、null カーソルが返されます。なんで?ありがとう!