查看索引
- db.tab1.getIndexes()
創建索引
- db.tab1.ensureIndex({x:1})
- x代表創建索引的字段,1代表正向排序,-1代表反向排序
刪除索引
- db.tab1.dropIndex(“conetnt_text”)
- conetnt_text表示索引的name值,可以通過查看索引方法查看到name的值
1、_id索引
- _id索引是絕大多數集合默認建立的索引
- 對於每個插入的數據,mongodb都會自動生成一條唯一的_id字段
2、單鍵索引
- _id字段就是單鍵索引,與_id字段相同
3、多建索引
- 多建索引與單鍵索引創建形式相同,區別在於字段的值
4、複合索引
5、過期索引
- time字段作爲被檢查過期時間的字段,其值不能爲時間戳(詳情看下面的過期索引的限制)
- expireAfterSeconds字段爲過期時間,單位爲秒
- 過期索引的一些限制
6、全文索引
- 建立方法
- 第3種創建方式表示對所有字段創立一個大的全文索引
- 查詢方法
- 第2種查詢用空格分隔的代表 或 條件,包含其中一個就可以
- 第3種查詢 -cc 表示不包含 cc 關鍵字
- 第4種查詢 “” 之間包含的內容代表 and 條件
- 相似度查詢
- 例子:
db.tab1.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})
- 全文索引的一些限制
- 例子:
索引的屬性
- 比較重要的屬性
- 名字:name
- {name:”自定義索引名”}
- 唯一性(索引字段值的唯一性):unique
- {unique:true|false}
- true代表唯一
- false代表不唯一
- 稀疏性(不存在的索引字段不創建索引):sparse
- {sparse:true|false}
- 是否定時刪除:
- 名字:name
地理位置索引
- 數據格式
db.dili.insert({"loc":[50,50],"title":"標題","content":"內容"})
- 創建方式
- db.dili.ensureIndex({“字段名”:”2d”})
db.dili.ensureIndex({"loc":"2d"})
- 查詢方式
- $near查詢:查詢距離某個點最近的點
- 例子:
- 查詢附近的點(沒有限制範圍):
db.dili.find({"loc":{$near:[10,10]}})
- 限制範圍查找附近的點:
db.dili.find({"loc":{$near:[10,10],$maxDistance:10}})
- 查詢附近的點(沒有限制範圍):