Что не так с геопространственными запросами с использованием полигонов и мангуста? - PullRequest
1 голос
/ 12 октября 2011

Я делаю геопространственный запрос, используя поиск $polygon.Мой запрос:

{
    'location_latLong': {
        '$within': {
            '$polygon': {
                point1: {
                    lon: '-74.2621',
                    lat: '40.5788'
                },
                point2: {
                    lon: '-74.2621',
                    lat: '40.8494'
                },
                point3: {
                    lon: '-73.7499',
                    lat: '40.8494'
                },
                point4: {
                    lon: '-73.7499',
                    lat: '40.5788'
                }
            }
        }
    }
}

В моей коллекции у меня есть документ, который CLEARLY лежит внутри многоугольника:

{
    "_id": ObjectId("4e95c285cb8a0efc2b00001a"),
    "addedOn": Date(1318437509839),
    "checkinDate": Date(1318392000000),
    "checkinTime": Date(1318437476000),
    "location_city": "New York",
    "location_country": "United States",
    "location_latLong": {
        "xLon": -74.007124,
        "yLat": 40.71455
    },
    "location_source": "personprofile",
    "location_state": "New York",
    "location_zip": ""
}

, и у меня есть индекс 2d для location_latLong.Я знаю, что MongoDB игнорирует имена ключей (предположительно), так что это не должно иметь значения.Так почему же это возвращает 0 результатов?

РЕДАКТИРОВАТЬ Я просто запустил explain, как рекомендовано в комментариях, и получаю:

{
    "cursor" : "GeoBrowse-polygon",
    "nscanned" : 0,
    "nscannedObjects" : 0,
    "n" : 0,
    "millis" : 0,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {
        "location_latLong" : [
            [
                [
                    0,
                    0
                ],
                [
                    0.000021457672119140625,
                    0.000021457672119140625
                ]
            ],
            [
                [
                    -0.000021457672119140625,
                    -0.000021457672119140625
                ],
                [
                    0,
                    0
                ]
            ],
            [
                [
                    -0.000021457672119140625,
                    0
                ],
                [
                    0,
                    0.000021457672119140625
                ]
            ],
            [
                [
                    0,
                    -0.000021457672119140625
                ],
                [
                    0.000021457672119140625,
                    0
                ]
            ]
        ]
    },
    "keysChecked" : NumberLong(8),
    "lookedAt" : NumberLong(4),
    "matchesPerfd" : NumberLong(0),
    "objectsLoaded" : NumberLong(0),
    "pointsLoaded" : NumberLong(0)
}

1 Ответ

1 голос
/ 13 октября 2011

Я решил проблему.Я передавал строки и должен был передавать поплавки.

Спасибо, что уделили время

...