MongoDB上的索引

时间:2021-09-23 04:10:28

1. 将索引建在number键上名为nameIndex并且为正序索引({number:-1}为倒序索引) 如: db.list名.ensureIndex({number:1},{name:"nameIndex"}) ;

2. 在查询时指定使用一个正序索引则调hint() 例如:db.list名.find({age:{$lte:56}},{name:1,_id:0}).hint({name:1});

3. 在查询时我们究竟使用了哪个索引  如:db.list名.find({age:{$lte:56}}).explain();即可打印出所使用的索引信息;

4. 建立索引有时很消耗性能那么我们可以将其在后台执行使用 db.list名.ensureIndex({number:1},{background:true}) ;

5.创建唯一索引,其含义就是该索引的每个键对应的值的内容不可以有重复 如:db.list名.ensureIndex({number:1},{unique:true,dropDups:true});即可                              dropDups:true控制如有重复就将其删除(可选)***但唯一索引的意义并不大***;

6.删除指定的索引(name_-1为索引名) 如:db.runCommand({dropIndexes:"list名",index:"name_-1"});即可完成索引的删除,或直接使用db.list名.drop(); 也可;

若想删除全部索引  如:db.runCommand({dropIndexes:"list名",index:"*"});即可;

7.2d索引:db.list名.ensureIndex({g:"2d"},{min:-1,max:200});   (以g为键的值的形式为:[{g:{x:20,y:90}},{g:{x:21,y:40}}, ...])

7.1 返回距离指定点[20,40]最近的2个点 如:db.list名.find({g:{$near:[20,40]}},{_id:0,g:200}).limit(2);

7.2 返回以指定点为圆心[20,40]半径为50最近的2个点 如:db.list名.find({g:{$within:{$center:[[20,40],50]}}},{_id:0,g:200});

7.3 返回以指定点[20,40],[50,80]为对角线的正方形内的所有点 如:db.list名.find({g:{$within:{$box:[[20,40],[50,80]]}}},{_id:0,g:200});