入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

mongo shell 之索引 -- 2D索引,全文索引

创建时间:2016-08-06 投稿人: 浏览次数:397

   mongodb 不仅可以创建普通索引,还可以创建二维索引, 全文索引等. 在对地图坐标查询时,创建2D索引是相当方便的, 在对文章内容进行查询的时候,创建全文索引是相当方便的.

一 2D 索引:

    1.1 创建数据

    var index = 0;
    for(var i=0; i<=10; i++){
      for(var j=0; j<=10; j++){
        db.map.insert({_id:index++,gis:{x:10*i,y:10*j}})
      }
    }


    1.2. 创建2d 索引
        db.map.ensureIndex({"gis":"2d"},{min:-1,max:101})
   //因为我选择的点为(0,0),(100,100), 所以指定所以范围为min:-1, max:101 就行, 也可以不指定

       


    1.3. 查询:

        以下的这些查询,如果不创建2d索引的话,是会报错的

        1). 查询距离坐标 (70.80) 最近的三个点:

          


        2). 查询以坐标(40,40), (60,60) 为对角线的正方形区域内的所有点:

            db.map.find({gis:{$within:{$box:[[40,40],[60,60]]}}}).sort({"gis.x":1})

          

     


        3). 查询以坐标(50,50) 为圆心,半径为20 的圆形区域内的所有的点

           db.map.find({gis:{$within:{$center:[[50,50],20]}}}).sort({"gis.x":1})

          


二 全文索引

  mongodb 3.x 系列已经默认开启了全文索引,直接创建索引,在查询的时候之间查询就行了, mongodb 目前支持20多种语言的全文索引,但是遗憾的是,目前还部支持中文的全文索引. 

    1. 创建全文索引:

      

    2. 查询索引:

     

    3. 使用全文索引查询:

     





声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。