省略したいサブドキュメント配列がそれほど大きくない場合。アプリケーション側で削除するだけです。 MongoDBで処理を行うということは、アプリケーションの代わりにMongoDBのコンピューティングリソースを使用することを選択することを意味します。一般に、アプリケーションはスケーリングが簡単で安価であるため、アプリケーション層での実装が望ましいです。
しかし、この正確なケースでは、MongoDBに実装するのはそれほど複雑ではありません:
db.collection.aggregate([
{
$addFields: { // keep the first element somewhere
first: { $arrayElemAt: [ "$mainArray", 0] }
}
},
{
$project: { // remove the subdocument field
"mainArray.array": false
}
},
{
$addFields: { // join the first element with the rest of the transformed array
mainArray: {
$concatArrays: [
[ // first element
"$first"
],
{ // select elements from the transformed array except the first
$slice: ["$mainArray", 1, { $size: "$mainArray" }]
}
]
}
}
},
{
$project: { // remove the temporary first elemnt
"first": false
}
}
])