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"] }
            }
         }
      }
   }
])