在聚合管道中按索引筛选数组项



我有mongodb数据库,我有这个文档结构:

{
"_id": ObjectId("2145214545ffff"),
"arr":[a , b , c , d , e , f , g , h , i, j]
}

我想执行聚合管道,这给了我这个结果:

{
"_id": ObjectId("2145214545ffff"),
"arr":[a , d , g , j ]
}

所以我需要的是过滤数组的项目,这给了我第 1、4、7 等项目。 感谢高级

您需要使用$map$range运算符。

以下查询将很有帮助:

db.collection.aggregate([
{
$project: {
arr: {
$map: {
input: {
$range: [
0,
{
$size: "$arr"
},
3
]
},
as: "a",
in: {
$arrayElemAt: [
"$arr",
"$$a"
]
}
}
}
}
}
])

MongoPlayGroundLink

最新更新