हाँ। इस प्रकार जावास्क्रिप्ट Array.prototype.slice()
विधि काम करती है, जिसका आंतरिक रूप से मोंगोडब द्वारा उपयोग किया जाता है।
ECMAScript® भाषा विशिष्टता के अनुसार ,
आपके मामले में relativeStart is -10
,k = max((-10+5),0), k = 0;
(जहां, 5
आपके सरणी की लंबाई है)।
इसलिए k
या skip
हमेशा 0
रहेगा , इन मामलों में।
हां, प्रोजेक्शन ऑपरेटर उसी तरह काम करता है। जब तक कोई inclusion
. न हो या exclusion
प्रोजेक्शन पैरामीटर में स्पष्ट रूप से निर्दिष्ट किया गया है, पूरे दस्तावेज़ को प्रोजेक्शन ऑपरेटरों जैसे $slice
के साथ पुनर्प्राप्त किया गया है ,$elemmatch
लागू किया जा रहा है।
db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})
वापस आ जाएगा:
{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }
findOne()
. का दूसरा पैरामीटर विधि not only for simple projection
उद्देश्य, फ़ील्ड नहीं हैं अनुमानित, केवल अगर field
. में से कोई एक नामों का मान 0
. होता है या 1
उनके विरुद्ध। यदि नहीं तो पूरा दस्तावेज वापस कर दिया जाता है। यदि किसी फ़ील्ड में projection operator
है लागू करने के लिए, इसे applied
किया जाएगा और projected
।
प्रक्षेपण तंत्र लगता है नीचे दिए गए तरीके से होने के लिए, जब भी $slice
ऑपरेटर शामिल है।
- डिफ़ॉल्ट रूप से सभी क्षेत्रों को प्रक्षेपण के लिए शामिल किया जाएगा।
- डिफ़ॉल्ट रूप से वे सभी फ़ील्ड जिनके मान प्रोजेक्शन ऑपरेटर पर आधारित होते हैं,
$slice
, यदि सत्य है , हमेशा प्रदर्शित होते हैं, चाहे नीचे कुछ भी हो।
बहिष्करण या समावेशन के लिए उठाए जा रहे कदम।
- प्रक्षेपण पैरामीटर में निर्दिष्ट फ़ील्ड की सूची उनके निर्दिष्ट क्रम में संचित होती है।
- केवल '0' या '1' मान वाली पहली फ़ील्ड के लिए :यदि फ़ील्ड का मान '0' है - तो इसे बाहर रखा जाता है, और सभी शेष फ़ील्ड शामिल किए जाने के लिए चिह्नित किए जाते हैं। यदि किसी फ़ील्ड में '1' है - तो उसे शामिल किया जाता है, और शेष सभी फ़ील्ड को बहिष्कृत करने के लिए चिह्नित किया जाता है।ली>
- बाद के सभी क्षेत्रों के लिए, उन्हें उनके मूल्यों के आधार पर बहिष्कृत या शामिल किया जाता है।