I am experiencing very slow performance on a MultiPoint field with 2dsphere index.
My document structure is:
{
_id: 'anything',
locs: { //2dsphere indexed
"type" : "MultiPoint",
"coordinates" : [
[ x1, y1 ],
[ x2, y2],
...
]
}
}
I have 10m records of the above documents and I am using $geoIntersects like below to find matched docs out:
db.collection.find({
"locs" : {
"$geoIntersects" : {
"$geometry" : {
"type" : "Polygon",
"coordinates" : [
[
[
151.1953097969488,
-33.87301779694879
],
[
151.2171042030512,
-33.87301779694879
],
[
151.2171042030512,
-33.89481220305122
],
[
151.1953097969488,
-33.89481220305122
],
[
151.1953097969488,
-33.87301779694879
]
]
]
}
}
}
});
It takes 20s to return 700 records which is extremely slow. So I did test on making the MultiPoint filed to a Point (just take the first one in the MultiPoint aray and also 2dsphere indexed) field.
So my doc structure is
{
_id: 'anything',
locs: { //2dsphere indexed
"type" : "Point",
"coordinates" : [ x1, y1 ]
}
}
and then run the same query again. Surprisingly, it returns really fast (less than100ms).
Would anyone give me a hint or walk around before MongoDb team fixes it?