存储地理空间数据的关键值架构?

时间:2011-02-26 13:16:30

标签: c# mongodb mongodb-.net-driver

开发一个桥梁以使用MongoDB的cms我使用存储键,值,类型来管理链接到cms的所有值。这些键,类型值存储在web.config中以允许可扩展的模式。在这种情况下,不允许类对象定义来保留动态模式。结果是存储为DynamicArray。这产生了一些关于执行和存储纬度经度的数据,以便使用Query.Near运算符以形式检索。

DynamicArray
{  
    item : { Key: "lat", Value: "12.897", Type:double }
    item : { Key: "lng", Value: "12.345", Type:double }  
    item : { Key: "country", Value: "USA", Type:String }  
    item : { Key: "state", Value: "CA", Type:String }  
    item : { Key: "city", Value: "San Jose", Type:String }  
    item : { Key: "district", Value: "", Type:String }   
}

Query.ElemMatch("DynamicArray", Query.And(Query.EQ("Key", "country"), Query.EQ("Value", "USA")));

Query.Near ??

这是与GeoSpatial搜索兼容的架构键值吗?高性能?如何使用官方驱动程序以此模式方式查询Query.Near(C#官方驱动程序)?

感谢。

1 个答案:

答案 0 :(得分:2)

为了在MongoDB上使用地理空间查询,您需要将x,y坐标存储为对象中的前两个值。有效模式的示例如下:

{ loc: [20,30] } 
{ loc: { x: 20, y: 30 }}
{ loc: { foo: 20, y: 30}}
{ loc: { lat : 40.739037, long: 73.992964 } }

您无法像上面的示例中那样将坐标分成多个对象。

有关详细信息:http://www.mongodb.org/display/DOCS/Geospatial+Indexing