2

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

我想在我的一个实体上显示经纬度坐标,以便可以使用 GeoNear 或 Query.WithinCircle 查询实体。

我正在向我的实体添加一个强类型的 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;}
}

尽管您现有的类应该可以工作(虽然建议使用数组,但唯一真正的要求是对象由两个数字组成)。我可能不会使用 Nullable<double> 而只是使用 double 代替。

您的地理查询以何种方式不起作用?

于 2012-07-10T18:06:24.537 回答