准备数据
  1. db.getCollection('sales').insertMany([
  2. { "_id" : 1, "item" : "1", "price" : 10, "quantity" : 2},
  3. { "_id" : 2, "item" : "2", "price" : 20, "quantity" : 1},
  4. { "_id" : 3, "item" : "3", "price" : 5, "quantity" : 10},
  5. { "_id" : 4, "item" : "4", "price" : 5, "quantity" : 20},
  6. { "_id" : 5, "item" : "5", "price" : 10, "quantity" : 10}
  7. ])

$match过滤

  • 用于过滤数据,只输出符合条件的文档

查询不小于10元价格的商品

  1. { $match: {price: {$gt: 10} }}

$sort排序

  • 升序 1
  1. { $sort: {price: 1} }
  • 降序 -1
  1. { $sort: {price: -1} }

$limit限制

  • 用来限制MongoDB聚合管道返回的文档数
只查询前2条商品信息
  1. { $limit:2 }

$group分组

  • 将集合中的文档分组,可用于统计结果
按价格分组, 统计总数
  1. { $group: {_id : "$price", total : {$sum : 1} } }

mongo管道操作符-其他常用 - 图1(结果)

$skip跳过

  • 跳过指定数量的文档,并返回余下的文档
  1. { $skip:2 }

连写:

筛选字段—》过滤—》排序

  1. db.sales.aggregate([
  2. {$project: {price: 1, quantity: 1} },
  3. {$match: {quantity: {$gte:10}} },
  4. {$sort: {price: -1} }
  5. ])

mongo管道操作符-其他常用 - 图2

其他

  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。