如何在mongoDB中存储地理空间信息

Jos*_*uis 28 geospatial mongodb

根据mongoDB文档(链接),如果要将地理空间信息存储在文档字段中,则有两个选项,即数组或嵌入文档,顺序应始终为经度,纬度.

如果我想使用嵌入式文档,我该如何确保字段的顺序?

或者嵌入文档中的字段是否必须具有特定名称?

Kay*_*Kay 33

对于嵌入文档,无论嵌入文档中字段的名称如何,第一个字段都应包含经度值,第二个字段应包含纬度值.例如:

 db.zips2.insert( { _id: 1, city: "b", loc: { x: -73.974, y: 40.764 } } )
 db.zips2.insert( { _id: 2, city: "b", loc: { x: -73.981, y: 40.768 } } )
Run Code Online (Sandbox Code Playgroud)

这里的x场是经度; 并且y字段将是纬度.

问候

  • `数组的值可以是数组,如[55.5,42.3],也可以是嵌入文档,如{lng:55.5,lat:42.3} .`http://docs.mongodb.org/manual/核心/地理信息的索引/#店铺位置数据 (5认同)
  • 根据MongoDB文档,首选数组格式,而不是嵌入式文档。https://docs.mongodb.com/manual/geospatial-queries/#geospatial-legacy (2认同)

And*_*rzo 32

2D地理空间索引,存储位置数据

"所有文档必须以相同的顺序存储位置数据.如果使用纬度和经度作为坐标系,则始终先存储经度 .MongoDB的2d球形索引算子只能识别[经度,纬度]排序."

这是一篇关于MongoDB地理空间查询的好文章,以备您需要时使用.


emi*_*zki 7

我建议你给你的字段命名:x and y而不是longitude/latitude,因为在更新之后,经度和纬度将按照字母顺序重新排序,因此反转.