$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
}
]
}
相关内容
- 查看有关 从 MongoDB 迁移到适用于 MongoDB 的 Azure Cosmos DB (vCore) 的选项。
- 详细了解 与 MongoDB 的功能兼容性。