$size(数组表达式)

适用对象: MongoDB vCore

$size 运算符用于计算数组中的元素数量。 需要确定文档中的数组字段的大小时,它特别有用。 此运算符可用于聚合管道以及查询投影。

语法

使用 $size 运算符的语法如下所示:

{ $size: <array> }

参数

说明
array 你要计算其元素数量的数组。

示例

让我们了解 stores 数据集中的示例 json 的用法。

{
  "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
  "name": "Lakeshore Retail",
  "sales": {
    "salesByCategory": [
      {
        "categoryName": "Towel Racks",
        "totalSales": 13237
      },
      {
        "categoryName": "Washcloths",
        "totalSales": 44315
      },
      {
        "categoryName": "Face Towels",
        "totalSales": 42095
      },
      {
        "categoryName": "Toothbrush Holders",
        "totalSales": 47912
      },
      {
        "categoryName": "Hybrid Mattresses",
        "totalSales": 48660
      },
      {
        "categoryName": "Napkins",
        "totalSales": 31439
      },
      {
        "categoryName": "Pillow Cases",
        "totalSales": 38833
      }
    ]},
"tag": [
    '#ShopLocal',
    '#FashionStore',
    '#SeasonalSale',
    '#FreeShipping',
    '#MembershipDeals'
  ]
}

示例 1:查找数组中的元素数量

该示例查询计算并返回所提供 JSON 示例的 salesByCategory 数组中的元素数量。

db.stores.aggregate([
  {
    $match: { "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60"}
  },
  {
    $project: {
      "storeId": 1,
      "name": 1,
      "numberOfSalesCategories": { $size: "$sales.salesByCategory" }
    }
  }
])

该查询返回“Lakehore Retail”商店可用的销售类别数量。

{
  "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
  "name": "Lakeshore Retail",
  "numberOfSalesCategories": 7
}