mongodb-$type、limit、skip、sort方法、索引、聚合

一、$type操作符

  $type操作符是依据BSON类型来寻觅集合中万分的数据类型,并赶回结果。

  MongoDB 中可以利用的种类如下表所示:

类型 数字 备注
Double 1  
String 2  
Object 3  
Array 4  
Binary data 5  
Undefined 6 已废弃。
Object id 7  
Boolean 8  
Date 9  
Null 10  
Regular Expression 11  
JavaScript 13  
Symbol 14  
JavaScript (with scope) 15  
32-bit integer 16  
Timestamp 17  
64-bit integer 18  
Min key 255 Query with -1.
Max key 127  

  例:db.mycol.find({‘name’:{$type:2}})获取 “mycol” 集合中 name为
String 的数据。

 

二、limit、skip、sort方法

  1、limit()办法:读取内定数量的多少记录,db.COLLECTION_NAME.find().limit(NUM)

  2、skip()艺术:跳过钦定数量的数量,db.COLLECTION_NAME.find().skip(NUM)

  3、sort()办法:对数码举办排序,sort()方法能够经过参数钦点排序的字段,并行使
1 和 -一 来钦命排序的章程,在那之中 一 为升序排列,而-一是用以降序排列。

  语法:db.COLLECTION_NAME.find().sort({KEY:1}),在那之中KEY是依照相排版序的字段,例:db.mycol.find().sort({‘name’:1})

 

三、mongodb索引

  索引是异样的数据结构,索引存款和储蓄在一个便于遍历读取的多寡集合中,索引是对数据库表中一列或多列的值举办排序的壹种结构。

  mongodb使用ensureIndex()方法成立索引,其语法:db.COLLECTION_NAME.ensureIndex({KEY:1}),在那之中KEY为要创设索引的字段,一为钦命按升序创立索引,-一降序。

  例:db.mycol.ensureIndex({‘name’:1,’age’:-1})

  ensureIndex() 接收可选参数,可选参数列表如下:

Parameter Type Description
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

  例:后台创造索引,db.mycol.ensureIndex({‘age’:一},{backgroud:true})

 

四、mongodb聚合

  MongoDB中聚合(aggregate)主要用于拍卖数量(诸如总括平均值,求和等),并回到计算后的多寡结果。有点类似sql语句中的
count(*)。

  aggregate()方法,语法格式如下:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

  例:对于协会为:

{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
}

  mongodb集合来推行:

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

  以上实例类似sql语句: select by_user, count(\) from mycol group
by
by_user,*通过字段by_user字段对数据开始展览分组,并总结by_user字段相同值的总和。

  以下是1对聚集的表达式:

表达式 描述 实例
$sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

  聚合框架中常用的多少个操作:

  • $project:修改输入文书档案的协会。能够用来重命名、扩展或删除域,也足以用来创立总括结果以及嵌套文书档案。
  • $match:用于过滤数据,只输出符合条件的文书档案。$match使用MongoDB的正儿八经查询操作。
  • $limit:用来限制MongoDB聚合管道再次来到的文档数。
  • $skip:在联谊管道中跳过钦点数量的文书档案,并重临余下的文书档案。
  • $unwind:将文书档案中的某3个数组类型字段拆分成多条,每条包蕴数组中的2个值。
  • $group:将集结中的文档分组,可用以统计结果。
  • 必发bifa88手机客服端,$sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理地方的不变文档。

  例:

db.article.aggregate(
    { $project : {
        title : 1 ,
        author : 1 ,
    }}
 );

  那样的话结果中就只还有_id,tilte和author五个字段了,暗许意况下_id字段是被含有的,要是不想让_id被含有可以_id:0

相关文章