MongoDB: Geospatial Index array not in correct format

梦想的初衷 提交于 2019-12-07 18:10:48

问题


While trying to setup to use the Geospatial Index on MongoDB, I run into the error message that the location array is not in the correct format.

This is my collection "test".

{
    "_id" : ObjectId("4f037ac176d6fdab5b00000a"),
    "CorporateId" : "XYZ12345",
    "Places" : [
           {

                   "Location" : {
                           "Longitude" : "50.0",
                           "Latitude" : "50.0"
                   },
                   "ValidFrom" : "2011-11-01 00:00:00",
                   "ValidTo" : "2021-12-31 00:00:00",
                   "itemCount" : "1"
           }
    ]
}

Once I run this code.

db.test.ensureIndex({"Places.Location": "2d"});

I get this error message

location object expected, location array not in correct format

My assumption is that the Long/Lat needs to be a number. Currently it is an object.

typeof db.test.Places.Location.Longitude -> Object
typeof db.test.Places.Location -> Object

My problem is that since I am still quite new to MongoDB, I don't really know how to approach this problem in the best way.


回答1:


Mongodb expects numbers for the coordinates while you passed in a string.

"Location" : {
                       "Longitude" : 50.0, // <<<<<<<<<<<<<< use numbers instead
                       "Latitude" : 50.0
               },

see http://www.mongodb.org/display/DOCS/Geospatial+Indexing for details.




回答2:


The problem has been fixed by converting the Location parameters into a float type like this.

$var = $JSonString['Places'];
 $test=count($var);

 $i=0;
 for ( $i=0; $i<$test;$i++){
       $lon = (float)$JSonString['Places'][$i]['Location']['Longitude'];
       $lat = (float)$JSonString['Places'][$i]['Location']['Latitude'];
       $JSonString['Places'][$i]['Location']['Longitude'] =$lon ;
       $JSonString['Places'][$i]['Location']['Latitude'] =$lat ;
       //error_log($lon . "->".gettype($JSonString['Places'][$i]['Location']['Latitude']), 3 , "/var/tmp/my-errors.log");
 }


来源:https://stackoverflow.com/questions/8721742/mongodb-geospatial-index-array-not-in-correct-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!