2014-09-17 20 views
6

Ho indicizzato la posizione del campo su 2dsphere e non riesco a eseguire la query geowithin su dati di tipo Punto GeoJson.MongoDB: Can notical can not query: BadValue geo query errata

Ecco la domanda:

db.test.find({ loc : 
        { $geoWithin : 
         { $geometry : 
          { type : "Polygon" , 
          coordinates : [ [ [-74.6862705412253, 40.42341005] , 
               [-75.0846179, 39.9009465 ], 
               [-74.20570119999999, 41.0167639 ] 
              ] 
              ] 
          } 
         } 
         } 
       } 

uscita:

uncaught exception: error: { 
"$err" : "Can't canonicalize query: BadValue bad geo query", 
"code" : 17287 
} 

documento Struttura:

  { 
      "_id" : ObjectId("53d15e7132e7b7978c472e6e"), 
      "loc" : { 
        "type" : "Point", 
        "coordinates" : [ -74.6862705412253, 40.42341005 ] 
        }, 

     } 

Indici:

{ 
"0" : { 
    "v" : 1, 
    "key" : { 
     "_id" : 1 
    }, 
    "name" : "_id_", 
    "ns" : "collab.test" 
}, 
"1" : { 
    "v" : 1, 
    "key" : { 
     "loc" : "2dsphere" 
    }, 
    "name" : "TestLocationIndex", 
    "ns" : "collab.test", 
    "2dsphereIndexVersion" : 2 
} 

}

Tuttavia, $ Polygon funziona correttamente sugli stessi documenti. Sto cercando di capire perché geowithin non funziona?

risposta

13

È perché il poligono non è chiuso, in realtà è necessario un minimo di quattro punti per un poligono valido, con il primo punto ripetuto alla fine, vedere GeoJSON Polygon docs. Il messaggio di errore potrebbe essere un po 'più utile, va detto. Questo vale anche per i formati di poligono WKB (Well Known Text (WKT) e Well Known Binary), quindi non è una particolarità di GeoJSON.

Vostri criteri dovrebbe funzionare in questo modo:

db.test.find({loc : 
       {$geoWithin : 
        {$geometry : 
         {type : "Polygon" , 
          coordinates : [[[-74.6862705412253, 40.42341005] , 
              [-75.0846179, 39.9009465], 
              [-74.20570119999999, 41.0167639], 
              [-74.6862705412253, 40.42341005]]]          
         } 
        } 
       } 
      } 
+0

Siete i benvenuti. Gli errori spaziali MongoDB possono essere un po 'inutili. –

Problemi correlati