一.经纬度表示方式 MongoDB 中对经纬度的存储有着自己的一套规范(主要是为了可以在该字段上建立地理空间索引).包括两种方式,分别是 Legacy Coordinate Pairs (这个词实在不知道怎么翻译...) 和  GeoJSON . Legacy Coordinate Pairs Legacy Coordinate Pairs 又有两种方式可以存储经纬度,可以使用数组(首选)或嵌入式文档. 数组: <field>: [<longitude>, <latitude…
现在有一种查询变得越来越流行(尤其是移动设备):找到离当前位置最近的N个场所. MongoDB专为平面坐标查询做了专门的索引,称为地理空间索引. 同样需要用ensureIndex创建,不过,参数是两个 "2d" db.map.ensureIndex({"gps":"2d"}) gps键的值必须是某种形式的一对值:一个包含两个元素的数组或者包含两个键的内嵌文档,像这样 {"gps":[0,100]} {"gps&quo…
Title:ElasticSearch实战系列四: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合 前言 在上上一篇中介绍了ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程,介绍了ElasticSearch Java API基础的语法,基本的增删改查(对应SQL语句), 本篇则来介绍一下ElasticSearch 聚合查询的使用JAVA API 和 DSL语句的使用 . ElasticSearch Aggregation 聚…
Ⅰ.全文索引 搜索引擎的实现核心技术,搜索类似where col like '%xxx%';关键字可以出现再某个列任何位置 这种查询条件,B+ tree索引是无法使用的.如果col上创建了索引,因为排序过了,所以能用到索引,但是对其中某个关键字是无法排序的 首先需要通过分词进行各词的提取,把各个分词再保存到各个B+ tree索引中 支持在varchar,char,text等类型上创建全文索引 MySQL5.6版本之前仅MyISAM支持全文索引 MySQL5.6版本InnoDB引擎支持全文索引 上…
1. 地理空间索引及全文搜索 与Elasitcsearch一样,MongoDB同样支持地理空间索引及全文搜索,由于选型常用ES而非MongoDB此处略过 2. TTL索引 首先先了解下固定集合,其类似于循环队列 ,当满的时候,最旧的文档会被覆盖.而TTL索引允许允许为每个文档设置一个超时时间,当一个文档过期时就会被删除.这种类型的索引对于类似会话保存这样的缓存场景非常有用. // 设置TTL索引,过期时间为24小时 db.getCollection('sessions').createIndex…
本篇博文主要介绍MongoDB中一些常用的特殊索引类型,主要包括: 用于简单字符串搜索的全文本索引: 用于球体空间(2dsphere)和二维平面(2d)的地理空间索引. 一.全文索引 MongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制.在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题.全文本索引使用的是“倒排索引”的思想来做的,和当前非常开源的lucene(全文检索,Apacle基金会下的开源项目)项目是一样的思想来做的.使用全…
地理空间索引: 地理空间索引,可用于处理基于地理位置的查询. Point:用于指定所在的具体位置,我们以restaurants为例: db.restaurants.insert({name: "Citi", loc: {type: "Point", coordinates: [52.37, 5.21]}}) db.restaurants.insert({name: "SAP", loc: {type: "Point", coo…
1.索引: 建立索引既耗时也费力,还需要消耗很多资源.使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求.如果不包括background 这个选项,数据库会阻塞建立索引期间的所有请求.阻塞的做法会让索引建立得更快,同时也意味着应用在此期间不能应答.即便在后台进行也会对正常操作有些影响. 2.地理空间索引: 通俗说就是找到离当前位置最近的N个场所.默认情况下,地理空间索引假设值的范围是-180~180.要是想使用其他值,可以通过ensureInde…
创建地理空间索引注意事项 创建地理空间索引失败,提示错误信息如下 > db.places.ensureIndex({"loc":"2dsphere"}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"ok" : 0,"errmsg" : "Can't extract geo keys fr…
一.简述 MongoDB中使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.默认情况下,"_id"这个键总是被返回,即便是没有指定要返回这个键.("_id"是一个集合中每个文档的唯一标识) 查询的使用上有限制,传递给数据库的查询文档必须是常量.(当然,在你的代码里可以是正常的变量) 一个键可以有任意多个条件,但是一个键不能对应多个更新修改器. 条件语句是内层文档的键,而修改器是外层文档的键. 二.使用find或者findOn…