首页 > 解决方案 > 在 mongo DB 中弹出许多前 n 个项目

问题描述

我有这份文件我需要更新 { "_id" : "1234", "arr" : [ 1, 2, 3, 4 ] }

我想从数组中弹出前 n 个项目。我想过做这样的事情:

 db.collection.update({
      _id: "1234"
    },
    {
      "$push": {
        "arr": {
          "$each": [],
          "$slice": {`n-arr.length`}
        }
      }
    })

有没有办法在切片部分使用表达式 {n - 'arr.length'} ?谢谢...”

标签: mongodbslice

解决方案


使用更新管道

db.collection.update({_id:"1234"},
[
      {
        $addFields: {
          gg : {$filter:{
            input:"$arr",
            as:"z",
            cond:{$gte:[{$indexOfArray:["$arr","$$z"]},5]} // 5 is n first item
        }}
        },
      },
      {
        $project: {
          arr: "$gg",
          _id: 1,
          
        },
      },
    ]
)

推荐阅读