本文共 1601 字,大约阅读时间需要 5 分钟。
- 索引
- id索引
- 单建索引
- 多键索引
- 复合索引
- 过期索引
- db.test.ensureIndex({time:1},{expireAfterSeconds:30})
- 过期索引(登录信息,或者日志信息),必须是指定的时间类型(isoDate)
- 过期索引不能是符合索引
- 删除时间不是精确的,mongodb每60秒扫描一次
- 全文索引
- 对字符串与字符创数组创建全文可搜索的索引
- db.local_2.ensureIndex({"article":"text"})
- db.local_2.find({$text:{$search:"aa bb cc"}}) //只有一个全文索引,或查询
- db.local_2.find({$text:{$search:"\"aa\" \"bb\"" cc"}})同时包含有aa bb的
- db.test.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})相似度索引
- 全局索引的限制:
- 每次查询,只能指定一个$text查询
- $text查询不能出现在$nor查询中
- 查询中如果包含了$text, hint不再起作用
- 地理位置索引
- 地理位置索引
- 概念:将一些点的位置存储在MongoDB中,创建索引后,可以按照位置来查找其他点
- 子分类
- 2d索引:用于存储和查找平面上的点
- $near查询 :查询距离某个点最近的点(会返回100个最近的点)
- db.location.find({w:{$near:[1,1],$maxDistance:10}}) maxDistance:最大距离10的点,near不支持minDistance
- $getWidthin查询:查询某个形状内的点
- $box:矩形,使用
- {$box:[[,],[,]]}//第一个坐标代表左边界,第二个右边界db.collection.find({w:{$geowithin:{$box:[[1,1],[2,3]]}}})
- $center:圆形
- {$center:[[,],r]}//r为圆的半径
- $polygon:多边形
- db.runCommand({
- getNear:, //指定数据集合
- near:[x,y], //查询坐标
- minDistance: (对2d索引无效,对2dsphere有效)
- maxDistance: //返回符合文档最多的数量
- num:2 //返回的数量})
- 2dsphere索引:用于存储和查找球面上的点
- db.collection.ensureIndex({w:"2dsphere"})
- 两种查找方式
- 查找距离某个点一定距离内的点
- 查找包含在某个区域内的点 *索引的属性
- 索引的创建db.collenction.ensureIndex({param1},{param2})-->param1是索引的值,param2是索引的属性。
- 名字:name
- db.collenction.ensureIndex({x:1,y:2,z:3},{name:"normal_index"}) //指定名字
- db.collenction.dropIndex("normal_index") //可用名字代替删除索引
- 唯一性
- db.集合名.ensureIndex({age:1}, {unique: true/false});
- 稀疏性
- db.test.createIndex({xm:1},sparse:true)//默认否
转载于:https://www.cnblogs.com/oldzhang1222/p/7977753.html