在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MongoDB中怎么使用地理信息索引

96次阅读
没有评论

共计 2308 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

MongoDB 中怎么使用地理信息索引,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

地理信息索引分为两类:2D 平面索引,2DSphere 球面索引。
在 2D 索引里面基本上能够保存到信息就是坐标,也就是经纬度坐标。

范例:定义一个商铺的集合
db.shop.insert({loc:[10,10]});
db.shop.insert({loc:[20,10]});
db.shop.insert({loc:[10,20]});
db.shop.insert({loc:[20,20]});
db.shop.insert({loc:[100,100]});
db.shop.insert({loc:[80,30]});
db.shop.insert({loc:[30,50]});

范例:为 s db.shop.createIndex({loc : 2d})
{
  createdCollectionAutomatically : false,
  numIndexesBefore : 1,
  numIndexesAfter : 2,
  ok : 1
}hop 集合定义 2D 索引

这个时候 shop 集合就可以实现坐标位置的查询了。有两种查询方式:
  ●“$near”查询:查询距离某个点最近的坐标点。
  ● $geoWithin 查询:查询某个形状内的点。

范例:假设现在的坐标是:[30,30]
db.shop.find({loc :{ $near :[30,30]}})
{_id : ObjectId( 599396cd0184ff511bf02bc6), loc : [20, 20] }
{_id : ObjectId( 599396ce0184ff511bf02bc9), loc : [30, 50] }
{_id : ObjectId( 599396cd0184ff511bf02bc4), loc : [20, 10] }
{_id : ObjectId( 599396cd0184ff511bf02bc5), loc : [10, 20] }
{_id : ObjectId( 599396cd0184ff511bf02bc3), loc : [10, 10] }
{_id : ObjectId( 599396cd0184ff511bf02bc8), loc : [80, 30] }
{_id : ObjectId( 599396cd0184ff511bf02bc7), loc : [100, 100] }

如果执行了以上的查询,实际上会将数据集合里面的前 100 个点的信息都返回来,可以设置距离范围。

范例:设置查询的距离范围
db.shop.find({loc :{ $near :[30,30], $maxDistance :20}})
{_id : ObjectId( 599396cd0184ff511bf02bc6), loc : [20, 20] }
{_id : ObjectId( 599396ce0184ff511bf02bc9), loc : [30, 50] }

但是需要注意一点,在 2D 索引里面虽然支持最大距离,但是不支持最小距离。
但是也可以设置一个查询的范围,使用“$geoWithin”查询,可以设置的范围有:
矩形范围($box):{$box :[[x1,y1],[x2,y2]]}
圆形范围($center):{$center :[[x1,y1],r]}
多边形($polygon):{$polygon :[[x1,y1],[x2,y2],[x3,y3],…]}

范例:查询矩形范围
db.shop.find({loc :{ $geoWithin :{$box:[[30,30],[80,80]]}}})
{_id : ObjectId( 599396ce0184ff511bf02bc9), loc : [30, 50] }
{_id : ObjectId( 599396cd0184ff511bf02bc8), loc : [80, 30] }

范例:查询圆形范围
db.shop.find({loc :{ $geoWithin :{$center:[[30,30],20]}}})
{_id : ObjectId( 599396cd0184ff511bf02bc6), loc : [20, 20] }
{_id : ObjectId( 599396ce0184ff511bf02bc9), loc : [30, 50] }

在 MongoDB 数据库里面,除了一些支持的操作函数之外,还有一个重要的命令:runCommand(),这个函数可以执行特定的 MongoDB 命令。

范例:利用 runCommand() 实现信息查询
db.runCommand({geoNear : shop , near :[30,30], maxDistance :20,num:2})
{
  results : [
  {
  dis : 14.142135623730951,
  obj : {
  _id : ObjectId(599396cd0184ff511bf02bc6),
  loc : [
  20,
  20
  ]
  }
  },
  {
  dis : 20,
  obj : {
  _id : ObjectId(599396ce0184ff511bf02bc9),
  loc : [
  30,
  50
  ]
  }
  }
  ],
  stats : {
  nscanned : 4,
  objectsLoaded : 2,
  avgDistance : 17.071067811865476,
  maxDistance : 20,
  time : 0
  },
  ok : 1
}

这类的命令可以说是 MongoDB 之中最为基础的命令。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2308字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 91精品国产亚洲爽啪在线观看 | 无码毛片一区二区三区本码视频 | 亚洲国产成人精品一区91 | 天堂网站在线观看 | 亚洲av片不卡无码久久蜜芽 | 精品免费国产一区二区三区四区 | 超清无码一区二区三区 | 色综合天天综合高清网国产在线 | 精品久久综合1区2区3区激情 | 国产亚洲精品久久久久久无挡照片 | 超级极品白嫩美女在线 | 精品久久久久久久一区二区伦理 | 男人的天堂免费一区二区视频 | 青青青爽国产在线视频 | 无码国产69精品久久久孕妇 | 日日摸日日踫夜夜爽无码 | 中日韩精品视频在线观看 | 久久久久久人妻毛片a片 | 成人毛片视频免费网站观看 | 久久精品观看影院2828 | 天天更新天天久久久更新影院 | 一本久道综合久久精品 | 亚洲av综合色区无码一二三区 | 四虎永久在线精品免费网址 | 日韩精品极品视频在线观看免费 | 99热这里只有精品4 99热这里只有精品5 | 色婷婷成人网 | 免费国产精品丝袜 | 免费观看国产精品 | 欧美成人在线免费视频 | 成人满18在线观看网站免费 | 日日碰狠狠躁久久躁综合网 | 极品粉嫩嫩模大尺度无码 | 操操影视 | 伊人激情在线 | 国产黄色片免费看 | 少妇无码一区二区三区 | 亚洲欧洲美洲无码精品va | 国产福利在线网址成人 | 亚洲国产九九精品一区二区 | 在线精品亚洲一区二区动态图 |