你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

$slice (数组表达式)

适用对象: MongoDB vCore

运算符 $slice 用于返回数组的子集。 它可用于将数组中的元素数限制为指定数字或从数组中的指定位置返回元素。 处理大型数组时,处理仅需要一部分数据进行处理或显示时,这特别有用。

语法

运算符的 $slice 语法如下所示。

  • 从数组的开头或结尾返回元素
{ $slice: [ <array>, <n> ] }
  • 从数组中的指定位置返回元素
{ $slice: [ <array>, <position>, <n> ] }

参数

说明
array 任何有效的数组表达式。
position 任何有效的整数表达式。
n 任何有效的整数表达式。

示例

让我们了解数据集 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:返回数组中的元素集

该示例查询集合中sales.salesByCategory数组_id: 988d2dd1-2faa-4072-b420-b91b95cbfd60的前三个元素stores

db.stores.aggregate([
     { $match: { "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60"} }
   , { $project: { "salesByCategory": { $slice: [ "$sales.salesByCategory", 3 ] } } }
])

查询响应使用示例 json 的前三个数组元素还原。

{
  "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
  "salesByCategory": [
    {
      "categoryName": "Towel Racks",
      "totalSales": 13237
    },
    {
      "categoryName": "Washcloths",
      "totalSales": 44315
    },
    {
      "categoryName": "Face Towels",
      "totalSales": 42095
    }
  ]
}