mongodb - 在 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'} ?谢谢...”
解决方案
使用更新管道
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,
},
},
]
)
推荐阅读
- python - Solving linear equation with four variables
- mysql - Laravel 使用运算符 AND/OR 在多表上搜索多个关键字
- wpf - TextBlock.FontSize 和 TextElement.FontSize 附加属性的各自用途是什么?
- java - 显示广告后应用程序关闭
- github - 从 GitHub 远程签出一个分支
- python - 仅从表中提取部分内容?
- c++ - C++ 中 std::string 的正确大小是多少?
- javascript - 如何从数组中复制对象,对其进行编辑并将其作为新对象推回数组
- android - 系统应用程序是否有权访问 /system 目录?
- java - 如何为 Flux.generate 指定调度程序