假设我有以下数组:
{
data: [1, 0, 4, 0, 0, 4, 1, 3, 0, 1, 0, 2, 2, 0, 1, 1, 0, 2, 0, 4, 1, 1, 0, 1, 1, 0]
}
如果我想选择除最后 3 个元素之外的所有元素,我可以使用建议的解决方案 here
db.collection.aggregate([
{
$project: {
"_id": 0,
"data": {
"$slice": [
"$data",
0,
{
$subtract: [ { $size: "$data" }, 3 ]
}
]
}
}
}
])
我可以获得所需的输出:
[1, 0, 4, 0, 0, 4, 1, 3, 0, 1, 0, 2, 2, 0, 1, 1, 0, 2, 0, 4, 1, 1, 0]
如何对连接/嵌套数组执行相同的操作,例如:
{
data: [[1, 0, 4, 0, 0, 4, 1], [1, 0, 4, 0, 1, 5, 3]]
}
为了选择除最后 3 个(每个数组)之外的所有元素?
预期输出:
{
data: [[1, 0, 4, 0], [1, 0, 4, 0]]
}
最佳答案
您可以使用$map迭代数组并执行相同操作:
db.collection.aggregate([
{
$addFields: {
data: {
$map: {
input: "$data",
in: {
"$slice": [
"$$this",
0,
{
$subtract: [
{
$size: "$$this"
},
3
]
}
]
}
}
}
}
}
])
关于MongoDB 切片 - 从嵌套数组中删除最后 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61193416/