sql >> Databáze >  >> NoSQL >> MongoDB

mongodb zkontrolujte, zda je bod v mnohoúhelníku

Zdá se, že to souvisí s objednávkou. Pokud používáte $geoWithin a snažíte se najít body uvnitř mnohoúhelníku, věc, která je uvnitř, je pole, na kterém hledáte. Nicméně $geoIntersects funguje v obou směrech, takže můžete hledat body uvnitř polygonů nebo polygony obsahující body, např.:

db.geom.insert({ "polygons": { "type":"Polygon", "coordinates": [[ [ 17.60083012593064, 78.18557739257812], [ 17.16834652544664, 78.19381713867188], [ 17.17490690610013, 78.739013671875], [ 17.613919673106714, 78.73489379882812], [ 17.60083012593064, 78.18557739257812] ]] } }); db.geom.find({ polygons: { $geoIntersects: { $geometry: { "type": "Point", "coordinates": [17.3734, 78.4738] } } } });

Všimněte si také, že na konci musíte opakovat první bod mnohoúhelníku. Pokud odstraníte poslední pár, dostanete $err :

Nelze kanonizovat dotaz:Chyba BadValue bad geo query.

Zdá se, že MongoDB vám umožňuje vkládat neplatné geometrie a stěžuje si pouze tehdy, když se pokusíte přidat index 2dsphere nebo provedete dotaz protínající/uvnitř/blízko, což je, myslím, rozumné, protože GeoJSON může být platný JSON, aniž by to byla platná geometrie.



  1. příkaz mongo nebyl rozpoznán při pokusu o připojení k serveru mongodb

  2. Jak na to:Testování aplikací HBase pomocí oblíbených nástrojů

  3. Aktualizujte model pomocí Mongoose, Express, NodeJS

  4. Ovlivňuje délka jména výkon v Redis?