MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सरणी पर MongoDB पेजिनेशन - जांचें कि क्या $slice सरणी की शुरुआत तक पहुंच गया है

इसका एक तरीका है $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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - एक ऐसे क्षेत्र को प्रोजेक्ट करना जो हमेशा मौजूद न हो

  2. मोंगोडब सरणी मिलान

  3. कैसे रजिस्टर करें और नेवला में एक स्कीमा कॉल करें

  4. MongoDB में कुल ($ ग्राफ लुकअप) तत्वों का मिलान कैसे करें?

  5. MongoDB, सरणी से वस्तु को हटा दें