SDK數(shù)據(jù)庫(kù) Command·查詢·地理位置操作符

2022-05-12 16:54 更新

Command.geoNear(options: Object): Command

支持端:小程序 , 云函數(shù) , Web

按從近到遠(yuǎn)的順序,找出字段值在給定點(diǎn)的附近的記錄。

參數(shù)

options: Object

屬性 類型 默認(rèn)值 必填 說(shuō)明
geometry GeoPoint 地理位置點(diǎn) (Point)
maxDistance number 選填,最大距離,單位為米
minDistance number 選填,最小距離,單位為米

返回值

Command

索引要求

需對(duì)查詢字段建立地理位置索引

示例代碼

找出離給定位置 1 公里到 5 公里范圍內(nèi)的記錄

const _ = db.command
db.collection('restaurants').where({
  location: _.geoNear({
    geometry: db.Geo.Point(113.323809, 23.097732),
    minDistance: 1000,
    maxDistance: 5000,
  })
}).get()

Command.geoWithin(options: Object): Command

支持端:小程序 , 云函數(shù) , Web

找出字段值在指定區(qū)域內(nèi)的記錄,無(wú)排序。指定的區(qū)域必須是多邊形(Polygon)或多邊形集合(MultiPolygon)。

參數(shù)

options: Object

屬性 類型 默認(rèn)值 必填 說(shuō)明
geometry Object 地理信息結(jié)構(gòu),Polygon,MultiPolygon,或 { centerSphere }

返回值

Command

索引要求

需對(duì)查詢字段建立地理位置索引

示例代碼 1:給定多邊形

const _ = db.command
const { Point, LineString, Polygon } = db.Geo
db.collection('restaurants').where({
  location: _.geoWithin({
    geometry: Polygon([
      LineString([
        Point(0, 0),
        Point(3, 2),
        Point(2, 3),
        Point(0, 0)
      ])
    ]),
  })
})

示例代碼 2:給定圓形

可以不用 geometry 而用 centerSphere 構(gòu)建一個(gè)圓形。

centerShpere 從公共庫(kù) 2.8.3 開始支持

centerSphere 對(duì)應(yīng)的值的定義是:[ [經(jīng)度, 緯度], 半徑 ]

半徑需以弧度計(jì),比如需要 10km 的半徑,則用距離除以地球半徑 6378.1km 得出的數(shù)字。

const _ = db.command
db.collection('restaurants').where({
  location: _.geoWithin({
    centerSphere: [
      [-88, 30],
      10 / 6378.1,
    ]
  })
})

Command.geoIntersects(options: Object): Command

支持端:小程序 , 云函數(shù) , Web

找出給定的地理位置圖形相交的記錄

參數(shù)

options: Object

屬性類型默認(rèn)值必填說(shuō)明
geometryObject地理信息結(jié)構(gòu),Point

返回值

Command

索引要求

需對(duì)查詢字段建立地理位置索引

示例代碼:找出和一個(gè)多邊形相交的記錄

const _ = db.command
const { Point, LineString, Polygon } = db.Geo
db.collection('restaurants').where({
  location: _.geoIntersects({
    geometry: Polygon([
      LineString([
        Point(0, 0),
        Point(3, 2),
        Point(2, 3),
        Point(0, 0)
      ])
    ]),
  })
})


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)