根据 mongoDB 文档(链接),如果您想在文档字段中存储地理空间信息,您有两个选项,数组或嵌入文档,顺序应始终为经度、纬度。
如果我想使用嵌入文档,如何确保字段的顺序?
或者嵌入文档中的字段是否必须具有特定名称?
根据 mongoDB 文档(链接),如果您想在文档字段中存储地理空间信息,您有两个选项,数组或嵌入文档,顺序应始终为经度、纬度。
如果我想使用嵌入文档,如何确保字段的顺序?
或者嵌入文档中的字段是否必须具有特定名称?
对于嵌入文档,无论嵌入文档中的字段名称如何,第一个字段应包含经度值,第二个字段应包含纬度值。例如:
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 } } )
这里的x字段是经度;y字段将是纬度。
问候
“所有文档必须以相同的顺序存储位置数据。如果使用纬度和经度作为坐标系,请始终先存储经度。MongoDB 的 2d 球形索引运算符仅识别 [经度,纬度] 排序。”
我建议您将字段命名为:x and y
,而不是longitude/latitude
,因为在更新后,经度和纬度将按字母顺序重新排序,因此倒置。
MongoDB 文档说如下:
一个名为坐标的字段,用于指定对象的坐标。如果指定纬度和经度坐标,请先列出经度,然后再列出纬度:
有效的经度值介于 -180 和 180 之间,包括两个值。有效的纬度值介于 -90 和 90(包括两者)之间。
官方 MongoDB 文档:https ://docs.mongodb.com/manual/geospatial-queries/#geospatial-indexes
地理空间索引使我们能够根据地理位置查找事物。
我们有 2 个选项:
在二维中,我们有一个带有x
&y
坐标的笛卡尔平面和一堆不同的对象。
文档需要存储某种 .x
位置y
和ensureIndex({'location':'2d', 'type':1})
.
(type
可选)选项指定索引的方向,即升序或降序。它可以是一个复合索引。
示例用法:
要查找附近的位置,请使用命令:
db.collectionName.find({location: {$near:[x,y]}})
在实践中,通常使用的方式是通过limit
. 将结果限制为例如20 append .limit(20)
。
db.collectionName.find({location: {$near:[x,y]}}).limit(20)