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

Mongodb 2.4 2dsphere dotazy velmi pomalu (pomocí $geoIntersects)?

Dotaz v protokolu neodpovídá dotazu, který jste spustili, umístění je jiné:

[ 116.3426399230957, 39.95959281921387 ] vs.
[ 116.3175773620605, 39.97607231140137 ]

Také si nemyslím, že jste reprodukovali celý svůj řádek protokolu, protože zmiňuje pouze area a ne deliver_area .

Nejsou však skutečně pomalé . V prvním případě to trvalo 103 ms, což se v některých případech může stát, protože váš server provádí jiné IO. Druhý dotaz trval 5 ms jako explain() výstup vám řekne.

Nejpozoruhodnější však je, že vaším hlavním kritériem je id: 59 . Nevím, jaké je vaše _id pole je, ale pokud nastavíte index na id pak by to ani nemělo používat 2dsphere index vůbec — pokud samozřejmě nemáte mnoho dokumentů s id=59 . V takovém případě byste mohli být lepší se složeným klíčem na { id: 1, deliver_area: '2dsphere' } .




  1. Upsert více záznamů pomocí MongoDb

  2. Powershell Mongodb Authentication

  3. Node.js + Mongoose / Mongo a zkrácené pole _id

  4. parametr maxmemory v redis.conf