Mongodb 聚合 - 如何通过多个数组索引过滤一个数组?
Mongodb Aggregate - How can i filter an array by multilpe array indexes?
我有一个巨大的数组,我只需要获取 12 的倍数的数组索引。我想使用 $filter
,但我在 cond
参数中苦苦挣扎。
我正在使用聚合,因为我需要做更多的事情,但我被困在这个过滤器部分。
data : [3,4,5,6,...,etc, <more 5000 items> ]
查询:
db.test.aggregate([{$project:{filtered_values: {$filter:{input: '$data', as:data ,cond: { ??? some witchcraft ???} }}}}])
预期结果:
[data[0],data[12],data[24],data[36],data[i%12 ===0]]
我怎样才能通过聚合达到这个结果?或者 $filter
是否是最佳解决方案?
试试这个:
db.collection.aggregate([
{
$set: {
data: {
$map: {
input: { $range: [0, { $size: "$data" }, 12] },
as: "i",
in: { $arrayElemAt: ["$data", "$$i"] }
}
}
}
}
])
我有一个巨大的数组,我只需要获取 12 的倍数的数组索引。我想使用 $filter
,但我在 cond
参数中苦苦挣扎。
我正在使用聚合,因为我需要做更多的事情,但我被困在这个过滤器部分。
data : [3,4,5,6,...,etc, <more 5000 items> ]
查询:
db.test.aggregate([{$project:{filtered_values: {$filter:{input: '$data', as:data ,cond: { ??? some witchcraft ???} }}}}])
预期结果:
[data[0],data[12],data[24],data[36],data[i%12 ===0]]
我怎样才能通过聚合达到这个结果?或者 $filter
是否是最佳解决方案?
试试这个:
db.collection.aggregate([
{
$set: {
data: {
$map: {
input: { $range: [0, { $size: "$data" }, 12] },
as: "i",
in: { $arrayElemAt: ["$data", "$$i"] }
}
}
}
}
])