查询、索引和聚合

 > sudo service mongodb start

 > mongo

 > mongo --shutdown   #关闭MongoDB服务

  查询语句条件 

  1.>  $gt     < $lt     >= $gte     <=$lte

 > db.user.find({"age":{$gt:10,$lt:15}})  #在user中查询年龄大于10小于15的数据

  2.type的值:1双精度型  2字符串  3对象  4数组  5二进制数据  7对象ID  8布尔类型  9数据   10空  11正则表达式  13JS代码   14符号   15有作用域的JS代码   16:32位整数型  17时间戳  18:64位整数型  255Min key   127Max key

 > db.user.find({"sex":{$type:2}})  #查询存储的是字符串的性别的文档

  3.limit读取指定数量的数据记录

 > db.user.find().limit(4)  #读取前四条记录

  4.skip读取时调过指定数量的数据记录

 > db.user.find().limit(4).skip(1)  #显示跳过第一条后的四条数据

  5.sort  1表示升序   -1表示降序  db.collecitonName.find().sort({key:1|-1})

  索引

 索引能够极大的提高查询的效率,若没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别是在处理大量的数据时,查询可能要花费几十秒甚至几分钟。索引是一种特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库集合中一个文档或多个文档的值进行排序的一种结构。同样,1代表升序,-1代表降序。

 ensureIndex()的可选参数:

  参数                              类型                                 描述

 background                     Boolean                建立索引要不要阻塞其他数据库操作,默认为false  

 unique                            Boolean                建立的索引是否唯一,默认为false

 name                              string                   索引的名称,若未指定,系统自动生成

 dropDups                        Boolean                建立唯一索引时,是否删除重复记录,默认false

 sparse                             Boolean                对文档不存在的字段数据不启用索引,默认为false

 expireAfterSeconds           Boolean                设置集合的生存时间,单位为秒 

 v                                    index version         索引的版本号

 weights                           document              索引权重值,范围为1到999999

 default-language              string                    默认为英语

 language_override            string                    默认为language

 > db.user.ensureIndex({"name":1},{background:1})

  聚合 aggregate  语法 db.collectionName.aggregate({$match:{x:1},{limit:num},$group:{_id}:$age})

  可选参数  $match查询,跟find一样   $limit限制显示结果数量   $skip忽略结果数量  $sort排序   $group按照给定表达式组合结果

 聚会表达式 $sum 计算总和   $avg 计算平均值  $min、$max 计算最小值和最大值   $push 在结果文档中插入值到一个数组   $addToSet  在结果文档中插入值到一个数组,但不创建副本   $first 根据资源文档的排序获取第一个文档数据  $last  根据资源文档的排序获取最后一个文档数据

 $ db.user.aggregate([{$group:{_id:"$name",user:{$sum:"$user_id"}}}])

  管道

 MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理,管道操作是可以重复的。表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其他的文档。聚合框架中常用的几个操作:$project 修改输入文档的结构,可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档  $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作  $limit用来限制MongoDB聚合管道返回的文档数  $skip在聚合管道中调过指定数量的文档,并返回余下的文档  $unwind在文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值 $group将结合中的文档分组,可用于统计结果  $sort将输入文档排序后输出   $geoNear输出接近某一地理位置的有序文档

 > db.user.aggregate([{$match:{user_id:{$gt:0,$lte:2}}},{$group:{_id:"user",count:{$sum:1}}}])

原文地址:https://www.cnblogs.com/forerver-elf/p/4720976.html