इसका एक तरीका है $cond
. का उपयोग करना ऑपरेटर :
प्रश्न:
let inputPosition = -70
let positionConverted = -position // 70
let maxNumber = 1000
db.collection.aggregate([
{
$project: {
comments: {
$slice: [ "$comments",
{ $cond: [ { $gte: [ { $size: "$comments" }, positionConverted ] }, inputPosition, maxNumber ] }, 5 ] }
}
}
])
परीक्षा : mongoplayground
स्पष्टीकरण :
तो $slice
. का सिंटैक्स { $slice: [ <array>, <position>, <n> ] }
है उस से यदि आप <position>
. के लिए सरणी के आकार से बड़ा मान पास करते हैं तो आपको जवाब में एक खाली सरणी मिलेगी।
यहां हम $cond
. का उपयोग कर रहे हैं सशर्त रूप से inputPosition
. का मान भेजने के लिए या maxNumber
. का मान करने के लिए <position>
. इसके अतिरिक्त, मेरे पास maxNumber
. का हार्ड कोडित मान है से 1000
लेकिन सामान्य तौर पर यह सब आपकी पसंद पर निर्भर करता है - आप कम संख्या का उपयोग कर सकते हैं, इससे कोई फर्क नहीं पड़ता, वह संख्या आपके सरणी के आकार से अधिक होनी चाहिए, आप size of array + 1
भी कर सकते हैं कोड> लेकिन उस ऑपरेशन को करने के बजाय यदि आपको लगता है कि आपकी सरणी हमेशा 1000 से कम है तो सीधे 1000
. का उपयोग करें ।
संदर्भ : $slice