MongoDB + C#驱动程序+地理空间字段查询 - 如何在实体上定义位置属性

时间:2012-07-09 19:45:48

标签: mongodb mongodb-.net-driver

我正在运行Mongodb 2.06版本和10Gen提供的C#驱动程序版本(1.5)。

我想在我的一个实体上设置纬度和经度坐标,这样我就可以使用GeoNear或Query.WithinCircle查询实体。

我正在向我的实体添加一个强类型的Location对象,然后在挂起我的实体的Location对象上创建一个索引,但是我无法让任何GeoNear查询工作。

这就是我的位置实体的样子。

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/并看到我的位置字段需要是一个数组。我的实体SomeEntity对于数组字段而不是我的Location对象会是什么样子?

我知道这很简单我只是想不出来! : - )

由于

1 个答案:

答案 0 :(得分:4)

你可以试试这个:

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

    // more fields here...

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

虽然您的现有类应该有效(虽然建议使用数组,但唯一真正的要求是对象由两个数字组成)。我可能不会使用Nullable&lt; double&gt;而只是使用双倍。

您的地理位置查询无法正常工作?