在聚合管道中按索引过滤数组项
filter Items of Array by Index in Aggregation Pipeline
我有 mongodb 数据库,我有这个文件结构:
{
"_id": ObjectId("2145214545ffff"),
"arr":[a , b , c , d , e , f , g , h , i, j]
}
我想执行聚合管道,这给了我这个结果:
{
"_id": ObjectId("2145214545ffff"),
"arr":[a , d , g , j ]
}
所以我需要的是对数组的项目进行某种过滤,这会给我第一个、第四个、第七个等等项目。
感谢进阶
以下查询会有所帮助:
db.collection.aggregate([
{
$project: {
arr: {
$map: {
input: {
$range: [
0,
{
$size: "$arr"
},
3
]
},
as: "a",
in: {
$arrayElemAt: [
"$arr",
"$$a"
]
}
}
}
}
}
])
我有 mongodb 数据库,我有这个文件结构:
{
"_id": ObjectId("2145214545ffff"),
"arr":[a , b , c , d , e , f , g , h , i, j]
}
我想执行聚合管道,这给了我这个结果:
{
"_id": ObjectId("2145214545ffff"),
"arr":[a , d , g , j ]
}
所以我需要的是对数组的项目进行某种过滤,这会给我第一个、第四个、第七个等等项目。 感谢进阶
以下查询会有所帮助:
db.collection.aggregate([
{
$project: {
arr: {
$map: {
input: {
$range: [
0,
{
$size: "$arr"
},
3
]
},
as: "a",
in: {
$arrayElemAt: [
"$arr",
"$$a"
]
}
}
}
}
}
])