2011-07-08 8 views
1

最新の公式10gen mongo C#ドライバ(1.1.0.4184)をダウンロードしました。場所に基づいていくつかの結果を得るための非常に簡単なクエリだと思っています:10G公式C#ドライバを使用したMongo geo結果

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(query)と入力します。 Findの定義が見つからないというコンパイルエラーが発生する。

これはかなりシンプルで、私はモンゴーを学びたいと思っているので、イライラしているので、私は自分の髪を引っ張っています。どんな助けでも大歓迎です。ありがとう!!

答えて

0

ほとんどのFindAsは、クエリに一致するドキュメントがないため、結果を返しませんでした。クエリと一致しなかった理由を判断するために、いくつかのサンプルドキュメントとパラメータの値を確認する必要があります。

Findメソッドは、MongoCollectionクラス(抽象基本クラス)ではなく、MongoCollection < TDefaultDocument>クラスで定義されています。 _houses変数をMongoCollectionとして定義したため、Findメソッドが表示されません。

あなたのコレクションオブジェクトには、デフォルトのドキュメントタイプがHouseである必要があります。私はこのようなあなたの_houses変数を宣言するお勧めします。

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

さらにノートあなたの地理のクエリに:あなたは球状クエリを実行する予定がある場合(経度、緯度)の順序でデータを格納するようにしてください。ほとんどのジオクエリは、どちらの順序でもどちらの順序でも使用できますが、球面クエリでは、順序が(経度、緯度)となるようにを指定する必要があります。

+0

ありがとうございました!それは私が必要なところに私を持っていました。私は半径をラジアンに変換していたので、実際には結果はありませんでした。それは方法がkmまたはマイルを使用するように見えますか、あなたは知っていますか、それとも足ですか? – Rizyak

関連する問題