mongodb创建2D索引

Posted answerhfh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb创建2D索引相关的知识,希望对你有一定的参考价值。

1、 MongoDB支持二维空间索引,这是设计时考虑到基于位置的查询。 如果需要使用这种索引,应确定对象中存储的字段是子对象或数组,前两个元素为X,Y坐标

2、插入数据

     db.location.insert("loc":[20,20]);

3、创建索引

     db.location.ensuerIndex("loc":"2d");

4、$near查询

     db.location.find("loc":$near:[20,20]).limit(10);

    上面的一句将按离目标点(20,20)距离最近的10个点(距离倒序排列)

5、geoNear Command

      虽然find()语法为查询的首选,Mongo也提供来了 geoNear 命令来执行相似的函数。geoNear命令有一个额外的好处是结果中返回距离目标点的距离,以及一些利于排除故障的信息。

      db.runCommand(geoNear:"location",near:[20,20],num:2);

6、 Bounds Queries

     $within 参数可以代替$near来查找一个形状之内结果。同时,也支持$box(矩形)和$center(圆环)

    想要查找一个一个矩形之内所有的点,必须制定该矩形的左下角和右上角坐标:

   box = [[10,10],[40,40]]

   db.location.find("loc":$within:"$box":box)




    查询索引
    > db.test.getIndexes()
    删除索引的命令:
    > db.test.dropIndex("username":1)



以上是关于mongodb创建2D索引的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB的地理位置索引

带有嵌套对象的 MongoDB 上的 2d 索引

MongoError:找不到任何特殊索引:2d(需要索引),2dsphere(需要索引)

如何使用 C++ 在 MongoDB 中创建地理空间索引

什么是首选?创建统计信息或创建非聚集过滤索引?

如何从 Mongoose 获取定义的索引