2

Mongodb のバージョン 2.06 と、10Gen が提供する C# ドライバーのバージョン (1.5) を実行しています。

GeoNear または Query.WithinCircle を使用してエンティティをクエリできるように、エンティティの 1 つに緯度と経度の座標を設定したいと考えています。

エンティティに厳密に型指定された Location オブジェクトを追加し、エンティティからぶら下がっている Location オブジェクトにインデックスを作成していますが、GeoNear クエリを動作させることができません。

これは、私の Location エンティティがどのように見えるかです。

public class Location
{
    [BsonDefaultValue(null)]
    public Nullable<double> lon { get; set; }

    [BsonDefaultValue(null)]
    public Nullable<double> lat { get; set; }  
}

これが問題の私のエンティティの外観です。

  public class SomeEntity
  {
   public string Field1 {get; set;}

   // more fields here...

   public Location Loc {get; set;}
  }

このリンクhttp://www.mongodb.org/display/DOCS/Geospatial+Indexing/ を見つけたところ、場所フィールドが配列である必要があることがわかりました。Location オブジェクトの代わりに配列フィールドを使用すると、私のエンティティ SomeEntity はどのように見えるでしょうか?

私はこれが単純なことを知っていますが、それを理解することはできません! :-)

ありがとう

4

1 に答える 1

4

これを試すことができます:

public class SomeEntity
{
    public string Field1 {get; set;}

    // more fields here...

   public double[] Loc {get; set;}
}

既存のクラスは機能しているはずですが (配列が推奨されますが、唯一の実際の要件は、オブジェクトが 2 つの数値で構成されていることです)。おそらく Nullable<double> を使用せず、代わりに double を使用します。

地理クエリが機能しなかった理由は何ですか?

于 2012-07-10T18:06:24.537 に答える