zoukankan      html  css  js  c++  java
  • 高级查询与索引

       > sudo service mongodb start

     > mongo

     > exit #退出mongodb

      覆盖索引查询

     所有的查尊字段都是索引的一部分,所有的查询返回字段在同一个索引中。由于索引存在RAM中,因为索引获取数据要比扫描文档快。

     > db.users.ensureIndex({gender:1,user_name:1})

     > db.users.find({gender:"M"},{user_name:1,_id:0})  #这次查询,Mongodb不会在数据库文件中查找,而会从索引中提取数据。因为所以中不包含字段_id,所以_id在查询中会默认返回,可以在查询结果中将其排除。

      高级索引

     索引数组字段。在数组中创建索引,需要对数组中的每个字段一次建立索引。

     > db.user.insert({"adress":{"city":"zhuhai","province":"guangdong","pincode":"123"},"tags":["music","cricket","blogs"],"name":"clound"})

     > db.user.ensureIndex({"tags":1})    #会为music,cricket,blogs三个值建立单独的索引

     > db.user.find({tags:"cricket"})     

     > db.user.find({tag:"cricket"}).explain()  #验证索引是否被使用 若执行结果中显示"cursor":"BtreeCursor tags_1"则表示已经使用了索引

     > db.user.ensureIndex({"address.city":1,"address.provice":1,"address.pincode":1})

     > db.user.find({"address.city":"chengdu"})

     > db.user.find({"address.city":"chengdu","address.province":"sichuan"})  #查询表达式必须遵循指定的索引的顺序

      原子操作

     原子操作就是要么执行成功,要么执行失败。

     $set 用来指定一个键并更新键值,若键不存在并创建

     $unset  用来删除一个键

     $inc 对文档的某个值为数字型的键进行增减

     $push 把value追加到field里面去,field一定要是数组类型才行,若field不存在,会把一个数组类型加进去

     $pushAll  一次追加多个值到一个数组字段内

     $pull  从数组field内删除一个等于value的值

     $addToSet  增加一个值到数组内,而且只有这个值不在数组内才增加

     $pop 删除数组的一个或最后一个元素

     $rename  修改字段名称

     $bit  位操作,integer类型  

      查询分析

     explain操作提供了查询信息,使用索引及查询统计等。indexOnly若为true,表示我们使用了索引;cursor因为使用了索引,MongoDB中索引存储在B树结构中,若没有使用索引,有表的类型是BasicCursor。这个键还会给出使用的索引的名称,可以通过这个名称查询当前数据库下的system.indexes集合来得到索引的详细信息;n当前查询返回的文档数量;nscanned/nscannedObjects表明当前只一次查询一共扫描了集合中多少个文档;millis当前查询所需时间,毫秒数;indexBounds当前查询具体使用的索引

     hint():可以使用hints强迫Mongodb使用一个指定的索引,通过这种方法在某些情形下会提升性能。

  • 相关阅读:
    Linux Windows平台添加pip源
    Python redis交互
    Redis redis-trib集群配置
    Linux 加阿里yum源
    阿里云yum源镜像
    Android实战——GreenDao3.2的使用,爱不释手
    一个Demo带你彻底掌握View的滑动冲突
    观察者模式简单理解
    Android Studio插件之MVPHelper,一键生成MVP代码
    城市导航列表
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4721557.html
Copyright © 2011-2022 走看看