यदि आपका उप-दस्तावेज़ सरणी जिसे आप छोड़ना चाहते हैं, वह बहुत बड़ा नहीं है। मैं इसे सिर्फ आवेदन पक्ष में हटा दूंगा। 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
}
}
])