Результаты Mongo Geo с официальным 10gen C # драйвером - PullRequest
1 голос
/ 09 июля 2011

Я только что загрузил самый последний официальный драйвер 10gen mongo c # (1.1.0.4184), и я пытаюсь выполнить довольно простой запрос, чтобы получить некоторые результаты в зависимости от местоположения:

MongoServer server = MongoServer.Create("xxxxxx"); 
MongoCredentials credentials = new MongoCredentials("user", "pw");
MongoDatabase mongoDB = server.GetDatabase("housing", credentials);
MongoCollection _houses = housing.GetCollection(houses);
var a = Query.WithinCircle("houseLocation", Double.Parse(latitude), double.Parse(longitude), maxDistance); //maxDistance is in radians
var cursor = _houses.FindAs<House>(a);
foreach (var b in cursor)
{
    //something
}

Если я запускаю его через отладку, я получаю "перечисление не дало никаких результатов".

Я видел много примеров кода, и кажется, что многие используют метод Find, которого у меня, похоже, нет.Если я наберу _houses.Find (запрос).Я получаю ошибку компиляции, что не удается найти определение для Find.

Я вырываю свои волосы, потому что это должно быть довольно просто, и это расстраивает, когда я пытаюсь выучить монго.Любая помощь будет принята с благодарностью.Спасибо !!

1 Ответ

0 голосов
/ 09 июля 2011

Скорее всего, FindAs не дал результатов, потому что ни один документ не соответствовал запросу. Нам нужно просмотреть некоторые образцы документов и значения ваших параметров, чтобы определить, почему они не соответствуют запросу.

Метод Find определен в классе MongoCollection , а не в классе MongoCollection (который является абстрактным базовым классом). Вы не видите метод Find, потому что вы определили свою переменную _houses как MongoCollection.

Похоже, ваш объект коллекции должен иметь тип документа по умолчанию Дом. Я рекомендую объявить вашу переменную _houses следующим образом:

var _houses = mongoDB.GetCollection<House>("houses");
// or if you don't like var:
MongoCollection<House> _houses = mongoDB.GetCollection<House>("houses");

Еще одно замечание о вашем гео-запросе: если вы когда-либо планируете выполнять сферические запросы, обязательно храните ваши данные в (долготе, широте) порядке. Большинство гео-запросов могут работать с долготой и широтой в любом порядке (если вы последовательны), но сферические запросы требуют , чтобы порядок был (долгота, широта), поэтому я рекомендую всем стандартизировать это право с самого начала.

...