mongo shell 之文档 查询

来源:互联网 发布:s曲线加速算法 博客 编辑:程序博客网 时间:2024/06/08 02:31

    mongodb 对文档的查询提供了丰富的方法,在nosql 数据库中,算是出类拔萃了. 在单表的查询上可以媲美关系型数据库. mongodb 只能对单表进行查询,不能像关系型数据库一样对多表进行连接查询.mongo shell 中基本的查询格式为: db.[collection].find({查询器},{字段筛选器})


1. 字段筛选器 {key:0,key:0}

    默认情况下, mongo shell 会查询文档的所有字段信息,相当于sql 中的select *  操作, 如果想指定返回文档中的指定字段的话,可以指定需要显示的字段或者指定不需要显示的字段,这点比sql 中更灵活,sql 中只能选择要显示的字段. 0 表示此字段不显示,其它字段都显示,  1 表示此字段显示, 其它字段都不显示

    需要注意的是, 字段筛选器中,所有字段要么全是0 要么全是1, 不允许出现有些0 有些1 的情况.

   1) 显示所有字段

       


    2) 显示指定不显示_id 字段,也就是说要显示其它所有字段:

        


    3) 显示指定只显示_id 字段,也就是说其它字段都不显示

       


    4) 混合指定,报异常

       


2. 查询器:

    1. 整数运算符: {key:{$gt:20, $lt:40}},  $gt(>), $gte(>=), $lt(<), $lte(<=), $eq(=), $ne(!=), 只能比较整数类型的key

        查询 20<=age <=30 的学生, 相当于where age >=20  and age <=30

       


    2. 包含/不包含: {key:{$in:[val1,val2]}}, $in 包含, $nin 不包含, 适用于所有类型,类似于sql 中的in

        查询学生成绩为"70","80" 的学生列表, 相当于 where score in ( "70", "80")

       


    3. 正则查询: {key:/xxx/i}, 正则表达式查询,

        简单格式, 以 / 开头, / 结束, i 表示忽略大小写

       

       {key:{$regx:"",$options:"i"}}, 可以和其它条件关联使用

                 


    4. 取反, not 可以与任何查询器结合使用: $not:{查询器}

       


    5. null, 查询指定字段不存在的文档, mongodb 中不存在值等与null 的key-value, null 仅仅指此字段不存在, null 可以与$eq, $ne , $in 等结合使用

       


    6. 数组查询:

        1) 普通数组:查询数组包含所有指定的元素的记录, {key:{$all:[val1,val2]}

                     


        2) 普通数组:查询数组第i 个元素为指定值的文档: {"key.i":val}

          


        3) 普通数组:查询指定数组元素个数的文档:{key:{$size:val}}

          


        4) 文档数组: 查询子文档满足条件的查询:${key:{$elemMath:{}}}

    文档结构:查询子文档每个元素同时满足, city:"beijing" ,num:1002 的文档

         


           错误方式: 此中方式会把每个条件当做独立的条件遍历子文档

   


           正确方式:使用$elemMath, 后面的条件针对于同一个文档来筛选

   


        5) 只提取数组的指定元素:{key:{$silce:[start,end]}}, start 从0 开始, 左闭右开

          


 7.条件或: $or, mongodb 统一个{} 中的查询条件都是&&的关系,要是要使用或的关系,需要使用{$or:[{查询器},{查询器}]}, 跟的是查询器数组

     

     

3. 查询后常用的方法:

 格式: db.[collection].find().[method], 常用method 如下

   1. count(): 查看集合总数量

 2. siez(): 查看符合筛选条件的结果集的数量

   3. pretty(): 格式化文档输出,在有嵌套文档的时候,会进行格式化

 4. limit(): 提取几条文档

 5. skip(): 跳过几条文档

   6. explain(): 查看执行计划

 7. help(): 查询可使用的方法


1 0
原创粉丝点击