geoWithin
定义
geoWithin
geoWithin
操作符支持查询给定几何图形内的地理点。即使indexShapes
值在 索引定义中为true
,也仅返回点。您可以在以下位置查询点:
圆形
边界框
多边形
指定要搜索的坐标时,必须先指定经度,然后指定纬度。 经度值可以介于
-180
和180
之间,两者均包括在内。 纬度值可以介于-90
和90
之间,两者均包括在内。 坐标值可以是整数或双精度值。注意
Atlas Search 不支持以下内容:
非默认坐标参考系 (CRS)
平面 XY 坐标系(二维)
坐标对 点表示法(即
pointFieldName: [12, 34]
)
语法
geoWithin
通过以下语法实现:
{ "$search": { "index": <index name>, // optional, defaults to "default" "geoWithin": { "path": "<field-to-search>", "box | circle | geometry": <object>, "score": <score-options> } } }
选项
geoWithin
使用以下词条来构造查询:
字段 | 类型 | 说明 | 必要性 |
---|---|---|---|
| 对象 | 指定搜索框左下角和右上角 GeoJSON 点的对象。该对象接受以下字段: 要了解如何在 GeoJSON 对象中指定 GeoJSON 数据,请参阅GeoJSON 对象。
| 视条件而定 |
| 对象 | 对象,用于指定Atlas Search的中心点和半径(以米为单位)。 该对象包含以下GeoJSON字段:
要了解如何在 GeoJSON 对象中指定 GeoJSON 数据,请参阅GeoJSON 对象。
| 视条件而定 |
| GeoJSON 对象 | GeoJSON对象,用于指定要在其中进行 的 MultiPolygon 或 Polygon Atlas Search。必须将多边形指定为闭环,其中最后一个位置与第一个位置相同。 计算地理空间结果时, Atlas Search geoShape 和 geoWithin 操作符以及MongoDB $geoIntersects操作符使用不同的几何图形。从Atlas Search和MongoDB绘制多边形边的方式可以看出这种差异。 Atlas Search 根据 笛卡尔距离 绘制多边形 ,这是坐标参考系中两点之间的最短直线。 MongoDB使用基于2 dsphere 索引的测地线模式绘制多边形,该索引构建在测地线类型第三方库之上,或者使用来自2 d 索引的平面模式绘制多边形。要学习;了解详情,请参阅GeoJSON对象。 对于涉及多边形的地理空间查询,Atlas Search 和 MongoDB 可能会返回不同的结果。 要了解如何在 GeoJSON 对象中指定 GeoJSON 数据,请参阅GeoJSON 对象。
| 视条件而定 |
| 字符串或字符串数组 | 是 | |
| 对象 | 分配给匹配搜索结果的分数。 默认情况下,结果中的分数为
有关在查询中使用 | no |
示例
listingsAndReviews
sample_airbnb
以下示例使用数据库中的collection集合。如果集群上有样本数据集,则可以为地理类型创建自定义 Atlas Search 索引,并在集群上运行示例查询。
address.location
listingsAndReviews
使用以下示例索引定义为collection中的字段编制索引:
1 { 2 "mappings": { 3 "fields": { 4 "address": { 5 "fields": { 6 "location": { 7 "type": "geo" 8 } 9 }, 10 "type": "document" 11 }, 12 "property_type": { 13 "type": "stringFacet" 14 } 15 } 16 } 17 }
box
例子
以下查询使用geoWithin
操作符和box
字段在澳大利亚的边界框中搜索属性。
查询包括:
注意
您无需在 Atlas Search 搜索查询中指定名为default
的索引。如果索引有任何其他名称,则必须指定index
字段。
基本示例
以下查询返回与指定搜索条件匹配的文档。
1 db.listingsAndReviews.aggregate([ 2 { 3 "$search": { 4 "geoWithin": { 5 "path": "address.location", 6 "box": { 7 "bottomLeft": { 8 "type": "Point", 9 "coordinates": [112.467, -55.050] 10 }, 11 "topRight": { 12 "type": "Point", 13 "coordinates": [168.000, -9.133] 14 } 15 } 16 } 17 } 18 }, 19 { 20 $limit: 3 21 }, 22 { 23 $project: { 24 "_id": 0, 25 "name": 1, 26 "address": 1 27 } 28 } 29 ])
{ "name" : "Surry Hills Studio - Your Perfect Base in Sydney", "address" : { "street" : "Surry Hills, NSW, Australia", "suburb" : "Darlinghurst", "government_area" : "Sydney", "market" : "Sydney", "country" : "Australia", "country_code" : "AU", "location" : { "type" : "Point", "coordinates" : [ 151.21554, -33.88029 ], "is_location_exact" : true } } } { "name" : "Sydney Hyde Park City Apartment (checkin from 6am)", "address" : { "street" : "Darlinghurst, NSW, Australia", "suburb" : "Darlinghurst", "government_area" : "Sydney", "market" : "Sydney", "country" : "Australia", "country_code" : "AU", "location" : { "type" : "Point", "coordinates" : [ 151.21346, -33.87603 ], "is_location_exact" : false } } } { "name" : "THE Place to See Sydney's FIREWORKS", "address" : { "street" : "Rozelle, NSW, Australia", "suburb" : "Lilyfield/Rozelle", "government_area" : "Leichhardt", "market" : "Sydney", "country" : "Australia", "country_code" : "AU", "location" : { "type" : "Point", "coordinates" : [ 151.17956, -33.86296 ], "is_location_exact" : true } } }
元数据示例
以下查询返回指定搜索条件的属性类型(例如公寓、独立屋等)的数量。
1 db.listingsAndReviews.aggregate([ 2 { 3 "$searchMeta": { 4 "facet": { 5 "operator": { 6 "geoWithin": { 7 "path": "address.location", 8 "box": { 9 "bottomLeft": { 10 "type": "Point", 11 "coordinates": [112.467, -55.050] 12 }, 13 "topRight": { 14 "type": "Point", 15 "coordinates": [168.000, -9.133] 16 } 17 } 18 } 19 }, 20 "facets": { 21 "propertyTypeFacet": { 22 "type": "string", 23 "path": "property_type" 24 } 25 } 26 } 27 } 28 } 29 ])
[ { count: { lowerBound: Long('610') }, facet: { propertyTypeFacet: { buckets: [ { _id: 'Apartment', count: Long('334') }, { _id: 'House', count: Long('168') }, { _id: 'Townhouse', count: Long('29') }, { _id: 'Guest suite', count: Long('20') }, { _id: 'Condominium', count: Long('11') }, { _id: 'Cabin', count: Long('8') }, { _id: 'Serviced apartment', count: Long('7') }, { _id: 'Villa', count: Long('7') }, { _id: 'Bungalow', count: Long('5') }, { _id: 'Guesthouse', count: Long('5') } ] } } } ]
circle
例子
以下查询使用geoWithin
操作符和circle
字段搜索加拿大指定坐标一英里半径范围内的房产。
查询包括:
注意
您无需在 Atlas Search 搜索查询中指定名为default
的索引。如果索引有任何其他名称,则必须指定index
字段。
1 db.listingsAndReviews.aggregate([ 2 { 3 "$search": { 4 "geoWithin": { 5 "circle": { 6 "center": { 7 "type": "Point", 8 "coordinates": [-73.54, 45.54] 9 }, 10 "radius": 1600 11 }, 12 "path": "address.location" 13 } 14 } 15 }, 16 { 17 $limit: 3 18 }, 19 { 20 $project: { 21 "_id": 0, 22 "name": 1, 23 "address": 1 24 } 25 } 26 ])
{ "name" : "Ligne verte - à 15 min de métro du centre ville.", "address" : { "street" : "Montréal, Québec, Canada", "suburb" : "Hochelaga-Maisonneuve", "government_area" : "Mercier-Hochelaga-Maisonneuve", "market" : "Montreal", "country" : "Canada", "country_code" : "CA", "location" : { "type" : "Point", "coordinates" : [ -73.54949, 45.54548 ], "is_location_exact" : false } } } { "name" : "Belle chambre à côté Metro Papineau", "address" : { "street" : "Montréal, QC, Canada", "suburb" : "Gay Village", "government_area" : "Ville-Marie", "market" : "Montreal", "country" : "Canada", "country_code" : "CA", "location" : { "type" : "Point", "coordinates" : [ -73.54985, 45.52797 ], "is_location_exact" : false } } } { "name" : "L'IDÉAL, ( à 2 min du métro Pie-IX ).", "address" : { "street" : "Montréal, Québec, Canada", "suburb" : "Mercier-Hochelaga-Maisonneuve", "government_area" : "Mercier-Hochelaga-Maisonneuve", "market" : "Montreal", "country" : "Canada", "country_code" : "CA", "location" : { "type" : "Point", "coordinates" : [ -73.55208, 45.55157 ], "is_location_exact" : true } } }
geometry
示例
以下示例使用 geoWithin
操作符和 geometry
字段搜索夏威夷州的房产。type
字段指定区域是 GeoJSON 多边形还是多边形集合。
查询包括:
注意
您无需在 Atlas Search 搜索查询中指定名为default
的索引。如果索引有任何其他名称,则必须指定index
字段。
➤ 使用本页的“选择语言”下拉菜单设置本节示例的语言。
以下 Atlas Search 搜索查询:
使用复合
$search
阶段可以:指定结果
must
Polygon
位于由 集定义的coordinates
内。优先显示
condominium
类型属性的结果。
使用
$project
阶段以:排除除
name
、address
和property_type
之外的所有字段。为每个返回的文档添加相关性
score
。
[ { "$search": { "index": "<INDEX-NAME>", "compound": { "must": [{ "geoWithin": { "geometry": { "type": "Polygon", "coordinates": [[[ -161.323242, 22.512557 ], [ -152.446289, 22.065278 ], [ -156.09375, 17.811456 ], [ -161.323242, 22.512557 ]]] }, "path": "address.location" } }], "should": [{ "text": { "path": "property_type", "query": "Condominium" } }] } } } ]
1 SCORE: 2.238388776779175 _id: "1001265" 2 listing_url: "https://www.airbnb.com/rooms/1001265" 3 name: "Ocean View Waikiki Marina w/prkg" 4 summary: "A short distance from Honolulu's billion dollar mall, 5 and the same dis…" 6 ... 7 property_type: "Condominium" 8 ... 9 address: Object 10 street: "Honolulu, HI, United States" 11 suburb: "Oʻahu" 12 government_area: "Primary Urban Center" 13 market: "Oahu" 14 country: "United States" 15 country_code: "US" 16 location: Object 17 type: "Point" 18 coordinates: Array 19 0: -157.83919 20 1: 21.28634 21 is_location_exact: true 22 ... 23 24 SCORE: 2.238388776779175 _id: "10227000" 25 listing_url: "https://www.airbnb.com/rooms/10227000" 26 name: "LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!" 27 summary: "THIS IS A VERY SPACIOUS 1 BEDROOM FULL CONDO (SLEEPS 4) AT THE BEAUTIF…" 28 ... 29 property_type: "Condominium" 30 ... 31 address: Object 32 street: "Lahaina, HI, United States" 33 suburb: "Maui" 34 government_area: "Lahaina" 35 market: "Maui" 36 country: "United States" 37 country_code: "US" 38 location: Object 39 type: "Point" 40 coordinates: Array 41 0: -156.68012 42 1: 20.96996 43 is_location_exact: true 44 ... 45 46 SCORE: 2.238388776779175 _id: "10266175" 47 listing_url: "https://www.airbnb.com/rooms/10266175" 48 name: "Makaha Valley Paradise with OceanView" 49 summary: "A beautiful and comfortable 1 Bedroom Air Conditioned Condo in Makaha …" 50 ... 51 property_type: "Condominium" 52 ... 53 address: Object 54 street: "Waianae, HI, United States" 55 suburb: "Leeward Side" 56 government_area: "Waianae" 57 market: "Oahu" 58 country: "United States" 59 country_code: "US" 60 location: Object 61 type: "Point" 62 coordinates: Array 63 0: -158.20291 64 1: 21.4818 65 is_location_exact: true 66 ... 67 68 SCORE: 2.238388776779175 _id: "1042446" 69 listing_url: "https://www.airbnb.com/rooms/1042446" 70 name: "March 2019 availability! Oceanview on Sugar Beach!" 71 summary: "" 72 ... 73 property_type: "Condominium" 74 ... 75 address: Object 76 street: "Kihei, HI, United States" 77 suburb: "Maui" 78 government_area: "Kihei-Makena" 79 market: "Maui" 80 country: "United States" 81 country_code: "US" 82 location: Object 83 type: "Point" 84 coordinates: Array 85 0: -156.46881 86 1: 20.78621 87 is_location_exact: true 88 ... 89 90 SCORE: 2.238388776779175 _id: "10527243" 91 listing_url: "https://www.airbnb.com/rooms/10527243" 92 name: "Tropical Jungle Oasis" 93 summary: "2 bedrooms, one with a queen sized bed, one with 2 single beds. 1 and …" 94 ... 95 property_type: "Condominium" 96 ... 97 address: Object 98 street: "Hilo, HI, United States" 99 suburb: "Island of Hawaiʻi" 100 government_area: "South Hilo" 101 market: "The Big Island" 102 country: "United States" 103 country_code: "US" 104 location: Object 105 type: "Point" 106 coordinates: Array 107 0: -155.09259 108 1: 19.73108 109 is_location_exact: true 110 ... 111 112 SCORE: 2.238388776779175 _id: "1104768" 113 listing_url: "https://www.airbnb.com/rooms/1104768" 114 name: "2 Bdrm/2 Bath Family Suite Ocean View" 115 summary: "This breathtaking 180 degree view of Waikiki is one of a kind. You wil…" 116 ... 117 property_type: "Condominium" 118 ... 119 address: Object 120 street: "Honolulu, HI, United States" 121 suburb: "Waikiki" 122 government_area: "Primary Urban Center" 123 market: "Oahu" 124 country: "United States" 125 country_code: "US" 126 location: Object 127 type: "Point" 128 coordinates: Array 129 0: -157.82696 130 1: 21.27971 131 is_location_exact: true 132 ... 133 134 SCORE: 2.238388776779175 _id: "11207193" 135 listing_url: "https://www.airbnb.com/rooms/11207193" 136 name: "302 Kanai A Nalu Ocean front/view" 137 summary: "Welcome to Kana'i A Nalu a quiet resort that sits on the ocean away fr…" 138 ... 139 property_type: "Condominium" 140 ... 141 address: Object 142 street: "Wailuku, HI, United States" 143 suburb: "Maui" 144 government_area: "Kihei-Makena" 145 market: "Maui" 146 country: "United States" 147 country_code: "US" 148 location: Object 149 type: "Point" 150 coordinates: Array 151 0: -156.5039 152 1: 20.79664 153 is_location_exact: true 154 ... 155 156 SCORE: 2.238388776779175 _id: "11319047" 157 listing_url: "https://www.airbnb.com/rooms/11319047" 158 name: "Sugar Beach Resort 1BR Ground Floor Condo !" 159 summary: "The Sugar Beach Resort enjoys a beachfront setting fit for a postcard." 160 ... 161 property_type: "Condominium" 162 ... 163 address: Object 164 street: "Kihei, HI, United States" 165 suburb: "Maui" 166 government_area: "Kihei-Makena" 167 market: "Maui" 168 country: "United States" 169 country_code: "US" 170 location: Object 171 type: "Point" 172 coordinates: Array 173 0: -156.46697 174 1: 20.78484 175 is_location_exact: true 176 ... 177 178 SCORE: 2.238388776779175 _id: "11695887" 179 listing_url: "https://www.airbnb.com/rooms/11695887" 180 name: "2 BR Oceanview - Great Location!" 181 summary: "Location, location, location... This is a great 2 bed, 2 bath condo is…" 182 ... 183 property_type: "Condominium" 184 ... 185 address: Object 186 street: "Kihei, HI, United States" 187 suburb: "Kihei/Wailea" 188 government_area: "Kihei-Makena" 189 market: "Maui" 190 country: "United States" 191 country_code: "US" 192 location: Object 193 type: "Point" 194 coordinates: Array 195 0: -156.44917 196 1: 20.73013 197 is_location_exact: true 198 ... 199 200 SCORE: 2.238388776779175 _id: "11817249" 201 listing_url: "https://www.airbnb.com/rooms/11817249" 202 name: "PALMS AT WAILEA #905-2BR-REMODELED-LARGE LANAI-AC" 203 summary: "Book with confidence this stunning 2 bedroom, 2 bathroom condo at the …" 204 ... 205 property_type: "Condominium" 206 ... 207 address: Object 208 street: "Kihei, HI, United States" 209 suburb: "Maui" 210 government_area: "Kihei-Makena" 211 market: "Maui" 212 country: "United States" 213 country_code: "US" 214 location: Object 215 type: "Point" 216 coordinates: Array 217 0: -156.4409 218 1: 20.69735 219 is_location_exact: true 220 ...
db.listingsAndReviews.aggregate([ { "$search": { "index": "<INDEX-NAME>", "compound": { "must": [{ "geoWithin": { "geometry": { "type": "Polygon", "coordinates": [[[ -161.323242, 22.512557 ], [ -152.446289, 22.065278 ], [ -156.09375, 17.811456 ], [ -161.323242, 22.512557 ]]] }, "path": "address.location" } }], "should": [{ "text": { "path": "property_type", "query": "Condominium" } }] } } }, { "$limit": 10 }, { $project: { "_id": 0, "name": 1, "address": 1, "property_type": 1, score: { $meta: "searchScore" } } } ])
<<<<<<<< HEAD:source/includes/fts/geo/procedures/steps-fts-tutorial-run-geo-query-compass.yaml stepnum: 1 title: "Connect to your cluster in |compass|." ref: connect-to-database-deployment-fts-compass content: | Open |compass| and connect to your {+cluster+}. For detailed instructions on connecting, see :ref:`atlas-connect-via-compass`. --- stepnum: 2 title: "Use the ``listingsAndReviews`` collection in the ``sample_airbnb`` database." ref: use-sample-airbnb-compass content: | On the :guilabel:`Database` screen, click the ``sample_airbnb`` database, then click the ``listingsAndReviews`` collection. --- stepnum: 3 title: "Run an |fts| query on the ``listingsAndReviews`` collection." ref: run-geo-query-compass content: | The following query: .. include:: /includes/fts/facts/fact-fts-tutorial-run-geo-query-results.rst To run this |fts| query in |compass|: a. Click the :guilabel:`Aggregations` tab. #. Click :guilabel:`Select...`, then configure each of the following pipeline stages by selecting the stage from the dropdown and adding the query for that stage. Click :guilabel:`Add Stage` to add additional stages. .. list-table:: :header-rows: 1 :widths: 25 75 * - Pipeline Stage - Query * - ``$search`` - .. code-block:: javascript { 'index': 'geo-json-tutorial', 'compound': { 'must': [ { 'geoWithin': { 'geometry': { 'type': 'Polygon', 'coordinates': [ [ [ -161.323242, 22.512557 ], [ -152.446289, 22.065278 ], [ -156.09375, 17.811456 ], [ -161.323242, 22.512557 ] ] ] }, 'path': 'address.location' } } ], 'should': [ { 'text': { 'path': 'property_type', 'query': 'Condominium' } } ] } } * - ``$limit`` - .. code-block:: javascript 10 * - ``$project`` - .. code-block:: javascript { '_id': 0, 'name': 1, 'address': 1, 'property_type': 1, 'score': { '$meta': 'searchScore' } } If you enabled :guilabel:`Auto Preview`, |compass| displays the following documents next to the ``$project`` pipeline stage: .. code-block:: json :copyable: false :linenos: { ======== [ { >>>>>>>> 44b896764 (DOCSP-47238 Performance Options reference section + tutorial example migration):source/includes/fts/geo/shell-query-output.js name: 'Ocean View Waikiki Marina w/prkg', property_type: 'Condominium', address: { street: 'Honolulu, HI, United States', suburb: 'Oʻahu', government_area: 'Primary Urban Center', market: 'Oahu', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -157.83919, 21.28634 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!', property_type: 'Condominium', address: { street: 'Lahaina, HI, United States', suburb: 'Maui', government_area: 'Lahaina', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.68012, 20.96996 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'Makaha Valley Paradise with OceanView', property_type: 'Condominium', address: { street: 'Waianae, HI, United States', suburb: 'Leeward Side', government_area: 'Waianae', market: 'Oahu', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -158.20291, 21.4818 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'March 2019 availability! Oceanview on Sugar Beach!', property_type: 'Condominium', address: { street: 'Kihei, HI, United States', suburb: 'Maui', government_area: 'Kihei-Makena', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.46881, 20.78621 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'Tropical Jungle Oasis', property_type: 'Condominium', address: { street: 'Hilo, HI, United States', suburb: 'Island of Hawaiʻi', government_area: 'South Hilo', market: 'The Big Island', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -155.09259, 19.73108 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: '2 Bdrm/2 Bath Family Suite Ocean View', property_type: 'Condominium', address: { street: 'Honolulu, HI, United States', suburb: 'Waikiki', government_area: 'Primary Urban Center', market: 'Oahu', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -157.82696, 21.27971 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: '302 Kanai A Nalu Ocean front/view', property_type: 'Condominium', address: { street: 'Wailuku, HI, United States', suburb: 'Maui', government_area: 'Kihei-Makena', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.5039, 20.79664 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'Sugar Beach Resort 1BR Ground Floor Condo !', property_type: 'Condominium', address: { street: 'Kihei, HI, United States', suburb: 'Maui', government_area: 'Kihei-Makena', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.46697, 20.78484 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: '2 BR Oceanview - Great Location!', property_type: 'Condominium', address: { street: 'Kihei, HI, United States', suburb: 'Kihei/Wailea', government_area: 'Kihei-Makena', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.44917, 20.73013 ], is_location_exact: true } }, score: 2.238388776779175 }, { name: 'PALMS AT WAILEA #905-2BR-REMODELED-LARGE LANAI-AC', property_type: 'Condominium', address: { street: 'Kihei, HI, United States', suburb: 'Maui', government_area: 'Kihei-Makena', market: 'Maui', country: 'United States', country_code: 'US', location: { type: 'Point', coordinates: [ -156.4409, 20.69735 ], is_location_exact: true } }, score: 2.238388776779175 } ]
要学习;了解如何在MongoDB Compass中运行以下查询,请参阅定义查询。
1 using MongoDB.Bson; 2 using MongoDB.Bson.IO; 3 using MongoDB.Bson.Serialization; 4 using MongoDB.Bson.Serialization.Attributes; 5 using MongoDB.Bson.Serialization.Conventions; 6 using MongoDB.Driver; 7 using MongoDB.Driver.GeoJsonObjectModel; 8 using MongoDB.Driver.Search; 9 using System; 10 11 public class GeoQuery 12 { 13 private const string MongoConnectionString = "<connection-string>"; 14 15 public static void Main(string[] args) 16 { 17 // allow automapping of the camelCase database fields to our AirbnbDocument 18 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 19 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 20 21 // connect to your Atlas cluster 22 var mongoClient = new MongoClient(MongoConnectionString); 23 var airbnbDatabase = mongoClient.GetDatabase("sample_airbnb"); 24 var airbnbCollection = airbnbDatabase.GetCollection<AirbnbDocument>("listingsAndReviews"); 25 26 // declare data for the compound query 27 string property_type = "Condominium"; 28 var coordinates = new GeoJson2DCoordinates[] 29 { 30 new(-161.323242, 22.512557), 31 new(-152.446289, 22.065278), 32 new(-156.09375, 17.811456), 33 new(-161.323242, 22.512557) 34 }; 35 var polygon = GeoJson.Polygon(coordinates); 36 37 // define and run pipeline 38 var results = airbnbCollection.Aggregate() 39 .Search(Builders<AirbnbDocument>.Search.Compound() 40 .Must(Builders<AirbnbDocument>.Search.GeoWithin(airbnb => airbnb.Address.Location, polygon)) 41 .Should((Builders<AirbnbDocument>.Search.Text(airbnb => airbnb.PropertyType, property_type))), 42 indexName: "<INDEX-NAME>") 43 .Limit (10) 44 .Project<AirbnbDocument>(Builders<AirbnbDocument>.Projection 45 .Include(airbnb => airbnb.PropertyType) 46 .Include(airbnb => airbnb.Address.Location) 47 .Include(airbnb => airbnb.Name) 48 .Exclude(airbnb => airbnb.Id) 49 .MetaSearchScore(airbnb => airbnb.Score)) 50 .ToList(); 51 52 // print results 53 foreach (var x in results) { 54 Console.WriteLine(x.ToJson()); 55 } 56 } 57 } 58 [ ]59 public class AirbnbDocument 60 { 61 [ ]62 public ObjectId Id { get; set; } 63 public String Name { get; set; } 64 [ ] 65 public string PropertyType { get; set; } 66 public Address Address { get; set; } 67 public double Score { get; set; } 68 } 69 [ ]70 public class Address 71 { 72 public GeoJsonPoint<GeoJson2DCoordinates> Location { get; set; } 73 }
{ "name" : "Ocean View Waikiki Marina w/prkg", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-157.83919, 21.286339999999999], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.68011999999999, 20.96996], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "Makaha Valley Paradise with OceanView", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-158.20291, 21.4818], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "March 2019 availability! Oceanview on Sugar Beach!", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.46880999999999, 20.786210000000001], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "Tropical Jungle Oasis", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-155.09259, 19.731079999999999], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "2 Bdrm/2 Bath Family Suite Ocean View", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-157.82696000000001, 21.279710000000001], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "302 Kanai A Nalu Ocean front/view", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.50389999999999, 20.79664], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "Sugar Beach Resort 1BR Ground Floor Condo !", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.46697, 20.784839999999999], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "2 BR Oceanview - Great Location!", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.44917000000001, 20.730129999999999], "is_location_exact" : true } }, "score" : 2.2383887767791748 } { "name" : "PALMS AT WAILEA #905-2BR-REMODELED-LARGE LANAI-AC", "property_type" : "Condominium", "address" : { "location" : { "type" : "Point", "coordinates" : [-156.4409, 20.69735], "is_location_exact" : true } }, "score" : 2.2383887767791748 }
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 7 "go.mongodb.org/mongo-driver/v2/bson" 8 "go.mongodb.org/mongo-driver/v2/mongo" 9 "go.mongodb.org/mongo-driver/v2/mongo/options" 10 ) 11 12 func main() { 13 // connect to your Atlas cluster 14 client, err := mongo.Connect(options.Client().ApplyURI("<connection-string>")) 15 if err != nil { 16 panic(err) 17 } 18 defer client.Disconnect(context.TODO()) 19 20 // set namespace 21 collection := client.Database("sample_airbnb").Collection("listingsAndReviews") 22 23 // define polygon 24 polygon := [][][]float64{{ 25 {-161.323242, 22.512557}, 26 {-152.446289, 22.065278}, 27 {-156.09375, 17.811456}, 28 {-161.323242, 22.512557}, 29 }} 30 31 // define pipeline 32 searchStage := bson.D{{"$search", bson.M{ 33 "index": "<INDEX-NAME>", 34 "compound": bson.M{ 35 "must": bson.M{ 36 "geoWithin": bson.M{ 37 "geometry": bson.M{ 38 "type": "Polygon", 39 "coordinates": polygon, 40 }, 41 "path": "address.location", 42 }, 43 }, 44 "should": bson.M{ 45 "text": bson.M{ 46 "path": "property_type", 47 "query": "Condominium", 48 }}, 49 }, 50 }, 51 }} 52 limitStage := bson.D{{"$limit", 10}} 53 projectStage := bson.D{{"$project", bson.D{{"name", 1}, {"address", 1}, {"property_type", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 54 55 // run pipeline 56 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) 57 if err != nil { 58 panic(err) 59 } 60 61 // print results 62 var results []bson.D 63 if err = cursor.All(context.TODO(), &results); err != nil { 64 panic(err) 65 } 66 for _, result := range results { 67 fmt.Println(result) 68 } 69 }
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_airbnb").Collection("listingsAndReviews") // define polygon polygon := [][][]float64{{ {-161.323242, 22.512557}, {-152.446289, 22.065278}, {-156.09375, 17.811456}, {-161.323242, 22.512557}, }} // define pipeline searchStage := bson.D{{"$search", bson.M{ "index": "<INDEX-NAME>", "compound": bson.M{ "must": bson.M{ "geoWithin": bson.M{ "geometry": bson.M{ "type": "Polygon", "coordinates": polygon, }, "path": "address.location", }, }, "should": bson.M{ "text": bson.M{ "path": "property_type", "query": "Condominium", }}, }, }, }} limitStage := bson.D{{"$limit", 10}} projectStage := bson.D{{"$project", bson.D{{"name", 1}, {"address", 1}, {"property_type", 1}, {"_id", 0}, {"score", bson.D{{"$meta", "searchScore"}}}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.computed; 6 import static com.mongodb.client.model.Projections.excludeId; 7 import static com.mongodb.client.model.Projections.fields; 8 import static com.mongodb.client.model.Projections.include; 9 import com.mongodb.client.MongoClient; 10 import com.mongodb.client.MongoClients; 11 import com.mongodb.client.MongoCollection; 12 import com.mongodb.client.MongoDatabase; 13 import org.bson.Document; 14 15 public class GeoQuery { 16 public static void main( String[] args ) { 17 Document agg = new Document( "$search", 18 new Document( "index", "<INDEX-NAME>") 19 .append("compound", 20 new Document("must", Arrays.asList(new Document("geoWithin", 21 new Document("geometry", 22 new Document("type", "Polygon") 23 .append("coordinates", Arrays.asList(Arrays.asList(Arrays.asList(-161.323242d, 22.512557d), Arrays.asList(-152.446289d, 22.065278d), Arrays.asList(-156.09375d, 17.811456d), Arrays.asList(-161.323242d, 22.512557d))))) 24 .append("path", "address.location")))) 25 .append("should", Arrays.asList(new Document("text", 26 new Document("path", "property_type") 27 .append("query", "Condominium")))))); 28 29 String uri = "<connection-string>"; 30 31 try (MongoClient mongoClient = MongoClients.create(uri)) { 32 MongoDatabase database = mongoClient.getDatabase("sample_airbnb"); 33 MongoCollection<Document> collection = database.getCollection("listingsAndReviews"); 34 35 collection.aggregate(Arrays.asList(agg, 36 limit(10), 37 project(fields(excludeId(), include("name", "address", "property_type"), computed("score", new Document("$meta", "searchScore")))))) 38 .forEach(doc -> System.out.println(doc.toJson() + "\n")); 39 } 40 } 41 }
以下代码示例:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
打印与
AggregateFlow
实例中的查询相匹配的文档。
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Projections.* 4 import com.mongodb.kotlin.client.coroutine.MongoClient 5 import kotlinx.coroutines.runBlocking 6 import org.bson.Document 7 8 fun main() { 9 // connect to your Atlas cluster 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 13 // set namespace 14 val database = mongoClient.getDatabase("sample_airbnb") 15 val collection = database.getCollection<Document>("listingsAndReviews") 16 17 runBlocking { 18 // define pipeline 19 val agg = Document( 20 "\$search", 21 Document("index", "<INDEX-NAME>") 22 .append( 23 "compound", 24 Document( 25 "must", listOf( 26 Document( 27 "geoWithin", 28 Document( 29 "geometry", 30 Document("type", "Polygon") 31 .append( 32 "coordinates", 33 listOf( 34 listOf( 35 listOf(-161.323242, 22.512557), 36 listOf(-152.446289, 22.065278), 37 listOf(-156.09375, 17.811456), 38 listOf(-161.323242, 22.512557) 39 ) 40 ) 41 ) 42 ) 43 .append("path", "address.location") 44 ) 45 ) 46 ) 47 .append( 48 "should", listOf( 49 Document( 50 "text", 51 Document("path", "property_type") 52 .append("query", "Condominium") 53 ) 54 ) 55 ) 56 ) 57 ) 58 59 // run pipeline and print results 60 val resultsFlow = collection.aggregate<Document>( 61 listOf( 62 agg, 63 limit(10), 64 project(fields( 65 excludeId(), 66 include("name", "address", "property_type"), 67 computed("score", Document("\$meta", "searchScore")) 68 )) 69 ) 70 ) 71 resultsFlow.collect { println(it) } 72 } 73 mongoClient.close() 74 }
Document{{name=Ocean View Waikiki Marina w/prkg, property_type=Condominium, address=Document{{street=Honolulu, HI, United States, suburb=Oʻahu, government_area=Primary Urban Center, market=Oahu, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-157.83919, 21.28634], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!, property_type=Condominium, address=Document{{street=Lahaina, HI, United States, suburb=Maui, government_area=Lahaina, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.68012, 20.96996], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=Makaha Valley Paradise with OceanView, property_type=Condominium, address=Document{{street=Waianae, HI, United States, suburb=Leeward Side, government_area=Waianae, market=Oahu, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-158.20291, 21.4818], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=March 2019 availability! Oceanview on Sugar Beach!, property_type=Condominium, address=Document{{street=Kihei, HI, United States, suburb=Maui, government_area=Kihei-Makena, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.46881, 20.78621], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=Tropical Jungle Oasis, property_type=Condominium, address=Document{{street=Hilo, HI, United States, suburb=Island of Hawaiʻi, government_area=South Hilo, market=The Big Island, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-155.09259, 19.73108], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=2 Bdrm/2 Bath Family Suite Ocean View, property_type=Condominium, address=Document{{street=Honolulu, HI, United States, suburb=Waikiki, government_area=Primary Urban Center, market=Oahu, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-157.82696, 21.27971], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=302 Kanai A Nalu Ocean front/view, property_type=Condominium, address=Document{{street=Wailuku, HI, United States, suburb=Maui, government_area=Kihei-Makena, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.5039, 20.79664], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=Sugar Beach Resort 1BR Ground Floor Condo !, property_type=Condominium, address=Document{{street=Kihei, HI, United States, suburb=Maui, government_area=Kihei-Makena, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.46697, 20.78484], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=2 BR Oceanview - Great Location!, property_type=Condominium, address=Document{{street=Kihei, HI, United States, suburb=Kihei/Wailea, government_area=Kihei-Makena, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.44917, 20.73013], is_location_exact=true}}}}, score=2.238388776779175}} Document{{name=PALMS AT WAILEA #905-2BR-REMODELED-LARGE LANAI-AC, property_type=Condominium, address=Document{{street=Kihei, HI, United States, suburb=Maui, government_area=Kihei-Makena, market=Maui, country=United States, country_code=US, location=Document{{type=Point, coordinates=[-156.4409, 20.69735], is_location_exact=true}}}}, score=2.238388776779175}}
以下代码示例:
导入
mongodb
,即 MongoDB 的 Node.js 驱动程序。创建一个
MongoClient
类实例,以建立与 Atlas 集群的连接。遍历游标以打印与查询匹配的文档。
1 const { MongoClient } = require("mongodb"); 2 3 // connect to your Atlas cluster 4 const uri ="<connection-string>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 await client.connect(); 11 12 // set namespace 13 const database = client.db("sample_airbnb"); 14 const coll = database.collection("listingsAndReviews"); 15 16 // define pipeline 17 const agg = [ 18 { 19 '$search': { 20 'index': '<INDEX-NAME>', 21 'compound': { 22 'must': [ 23 { 24 'geoWithin': { 25 'geometry': { 26 'type': 'Polygon', 27 'coordinates': [ 28 [ 29 [ 30 -161.323242, 22.512557 31 ], [ 32 -152.446289, 22.065278 33 ], [ 34 -156.09375, 17.811456 35 ], [ 36 -161.323242, 22.512557 37 ] 38 ] 39 ] 40 }, 41 'path': 'address.location' 42 } 43 } 44 ], 45 'should': [ 46 { 47 'text': { 48 'path': 'property_type', 49 'query': 'Condominium' 50 } 51 } 52 ] 53 } 54 } 55 }, { 56 '$limit': 10 57 }, { 58 '$project': { 59 '_id': 0, 60 'name': 1, 61 'address': 1, 62 'property_type': 1, 63 'score': { 64 '$meta': 'searchScore' 65 } 66 } 67 } 68 ]; 69 // run pipeline 70 const result = await coll.aggregate(agg); 71 72 // print results 73 await result.forEach((doc) => console.log(doc)); 74 } finally { 75 await client.close(); 76 } 77 } 78 run().catch(console.dir);
以下代码示例:
导入
pymongo
、MongoDB 的 Python 驱动程序和dns
模块,这是使用 DNS 种子列表连接字符串将pymongo
连接到Atlas
所必需的。创建一个
MongoClient
类实例,以建立与 Atlas 集群的连接。遍历游标以打印与查询匹配的文档。
1 import pymongo 2 3 # connect to your Atlas cluster 4 client = pymongo.MongoClient('<connection-string>') 5 6 # define pipeline 7 pipeline = [ 8 { 9 '$search': { 10 'index': '<INDEX-NAME>', 11 'compound': { 12 'must': [ 13 { 14 'geoWithin': { 15 'geometry': { 16 'type': 'Polygon', 17 'coordinates': [ 18 [ 19 [ 20 -161.323242, 22.512557 21 ], [ 22 -152.446289, 22.065278 23 ], [ 24 -156.09375, 17.811456 25 ], [ 26 -161.323242, 22.512557 27 ] 28 ] 29 ] 30 }, 31 'path': 'address.location' 32 } 33 } 34 ], 35 'should': [ 36 { 37 'text': { 38 'path': 'property_type', 39 'query': 'Condominium' 40 } 41 } 42 ] 43 } 44 } 45 }, { 46 '$limit': 10 47 }, { 48 '$project': { 49 '_id': 0, 50 'name': 1, 51 'address': 1, 52 'property_type': 1, 53 'score': { 54 '$meta': 'searchScore' 55 } 56 } 57 } 58 ] 59 # run pipeline 60 result = client["sample_airbnb"]["listingsAndReviews"].aggregate(pipeline) 61 62 # print results 63 for i in result: 64 print(i)
{ "address": { "country": "United States", "country_code": "US", "government_area": "Primary Urban Center", "location": { "coordinates": [ -157.83919, 21.28634 ], "is_location_exact": true, "type": "Point" }, "market": "Oahu", "street": "Honolulu, HI, United States", "suburb": "O\u02bbahu" }, "name": "Ocean View Waikiki Marina w/prkg", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Lahaina", "location": { "coordinates": [ -156.68012, 20.96996 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Lahaina, HI, United States", "suburb": "Maui" }, "name": "LAHAINA, MAUI! RESORT/CONDO BEACHFRONT!! SLEEPS 4!", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Waianae", "location": { "coordinates": [ -158.20291, 21.4818 ], "is_location_exact": true, "type": "Point" }, "market": "Oahu", "street": "Waianae, HI, United States", "suburb": "Leeward Side" }, "name": "Makaha Valley Paradise with OceanView", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Kihei-Makena", "location": { "coordinates": [ -156.46881, 20.78621 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Kihei, HI, United States", "suburb": "Maui" }, "name": "March 2019 availability! Oceanview on Sugar Beach!", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "South Hilo", "location": { "coordinates": [ -155.09259, 19.73108 ], "is_location_exact": true, "type": "Point" }, "market": "The Big Island", "street": "Hilo, HI, United States", "suburb": "Island of Hawai\u02bbi" }, "name": "Tropical Jungle Oasis", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Primary Urban Center", "location": { "coordinates": [ -157.82696, 21.27971 ], "is_location_exact": true, "type": "Point" }, "market": "Oahu", "street": "Honolulu, HI, United States", "suburb": "Waikiki" }, "name": "2 Bdrm/2 Bath Family Suite Ocean View", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Kihei-Makena", "location": { "coordinates": [ -156.5039, 20.79664 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Wailuku, HI, United States", "suburb": "Maui" }, "name": "302 Kanai A Nalu Ocean front/view", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Kihei-Makena", "location": { "coordinates": [ -156.46697, 20.78484 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Kihei, HI, United States", "suburb": "Maui" }, "name": "Sugar Beach Resort 1BR Ground Floor Condo !", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Kihei-Makena", "location": { "coordinates": [ -156.44917, 20.73013 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Kihei, HI, United States", "suburb": "Kihei/Wailea" }, "name": "2 BR Oceanview - Great Location!", "property_type": "Condominium", "score": 2.238388776779175 } { "address": { "country": "United States", "country_code": "US", "government_area": "Kihei-Makena", "location": { "coordinates": [ -156.4409, 20.69735 ], "is_location_exact": true, "type": "Point" }, "market": "Maui", "street": "Kihei, HI, United States", "suburb": "Maui" }, "name": "PALMS AT WAILEA #905-2BR-REMODELED-LARGE LANAI-AC", "property_type": "Condominium", "score": 2.238388776779175 }
以下示例使用 geoWithin
操作符和 geometry
字段搜索夏威夷州的房产。type
字段指定区域是 GeoJSON 多边形还是多边形集合。
查询包括:
注意
您无需在 Atlas Search 搜索查询中指定名为default
的索引。如果索引有任何其他名称,则必须指定index
字段。
1 .. input:: 2 :language: json 3 :linenos: 4 5 db.listingsAndReviews.aggregate([ 6 { 7 "$search": { 8 "geoWithin": { 9 "geometry": { 10 "type": "MultiPolygon", 11 "coordinates": [ 12 [[[-157.8412413882,21.2882235819], 13 [-157.8607925468,21.2962046205], 14 [-157.8646640634,21.3077019651], 15 [-157.862776699,21.320776283], 16 [-157.8341758705,21.3133826738], 17 [-157.8349985678,21.3000822569], 18 [-157.8412413882,21.2882235819]]], 19 [[[-157.852898124,21.301208833], 20 [-157.8580050499,21.3050871833], 21 [-157.8587346108,21.3098050385], 22 [-157.8508811028,21.3119240258], 23 [-157.8454308541,21.30396767], 24 [-157.852898124,21.301208833]]] 25 ] 26 }, 27 "path": "address.location" 28 } 29 } 30 }, 31 { 32 $limit: 3 33 }, 34 { 35 $project: { 36 "_id": 0, 37 "name": 1, 38 "address": 1 39 } 40 } 41 ]) 42 43 .. output:: 44 :language: javascript 45 :visible: false 46 47 { 48 "name" : "Heart of Honolulu, 2BD gem! Free Garage Parking!", 49 "address" : { 50 "street" : "Honolulu, HI, United States", 51 "suburb" : "Makiki/Lower Punchbowl/Tantalus", 52 "government_area" : "Primary Urban Center", 53 "market" : "Oahu", 54 "country" : "United States", 55 "country_code" : "US", 56 "location" : { 57 "type" : "Point", 58 "coordinates" : [ -157.84343, 21.30852 ], 59 "is_location_exact" : false 60 } 61 } 62 } 63 { 64 "name" : "Private Studio closed to town w/ compact parking", 65 "address" : { 66 "street" : "Honolulu, HI, United States", 67 "suburb" : "Oʻahu", 68 "government_area" : "Primary Urban Center", 69 "market" : "Oahu", 70 "country" : "United States", 71 "country_code" : "US", 72 "location" : { 73 "type" : "Point", 74 "coordinates" : [ -157.85228, 21.31184 ], 75 "is_location_exact" : true 76 } 77 } 78 } 79 { 80 "name" : "Comfortable Room (2) at Affordable Rates", 81 "address" : { 82 "street" : "Honolulu, HI, United States", 83 "suburb" : "Oʻahu", 84 "government_area" : "Primary Urban Center", 85 "market" : "Oahu", 86 "country" : "United States", 87 "country_code" : "US", 88 "location" : { 89 "type" : "Point", 90 "coordinates" : [ -157.83889, 21.29776 ], 91 "is_location_exact" : false 92 } 93 } 94 }