MongoDB数组聚合函数使用

2023-04-14 15:56:39 浏览数 (1)

$unwind

$unwind函数用于将数组类型的数据展开,将数组中的每个元素作为单独的文档进行处理,例如:

代码语言:javascript复制
db.orders.aggregate([
   { $unwind: "$items" },
   { $group: { _id: "$items.name", total: { $sum: "$items.price" } } }
])

这个命令将展开orders集合中的items数组,将每个items元素作为单独的文档进行处理,然后按照items.name字段进行分组,并计算每个分组的items.price字段之和。

$size

$size函数用于返回数组类型数据中的元素个数,例如:

代码语言:javascript复制
db.orders.aggregate([
   { $project: { items_count: { $size: "$items" } } }
])

这个命令将计算orders集合中items数组的元素个数,并将结果保存到items_count字段中。

$slice

$slice函数用于返回数组类型数据中的指定范围的元素,例如:

代码语言:javascript复制
db.orders.aggregate([
   { $project: { first_two_items: { $slice: ["$items", 2] } } }
])

这个命令将返回orders集合中items数组中的前两个元素,并将结果保存到first_two_items字段中。

$filter

$filter函数用于过滤数组类型数据中符合条件的元素,例如:

代码语言:javascript复制
db.orders.aggregate([
   {
      $project: {
         discount_items: {
            $filter: {
               input: "$items",
               as: "item",
               cond: { $gt: [ "$$item.price", 100 ] }
            }
         }
      }
   }
])

这个命令将过滤orders集合中items数组中价格大于100的元素,并将结果保存到discount_items字段中。

0 人点赞