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

क्षेत्र की लंबाई/आकार वापस करने के लिए प्रोजेक्शन विकल्प

.find() किसी भी तरह से लौटाए गए दस्तावेज़ों को "बदल" नहीं देता है। आप प्रक्षेपण में केवल "शामिल" या "बहिष्कृत" कर सकते हैं।

केवल "बदलने" वाली चीजें हैं .aggregate() या .mapReduce()

.aggregate() . के लिए , $strLenCP के लिए MongoDB 3.4 की आवश्यकता है या $strLenBytes , लेकिन आमतौर पर आपका मतलब पूर्व से होता है:

db.documents.aggregate([
  { "$project": {
    "bodyLength": { "$strLenCP": "$body" }
  }}
])

.mapReduce() . के लिए

db.documents.mapReduce(
  function() {
    emit(this._id, this.body.length)
  },
  function() { },
  { "out": { "inline": 1 } }
);

और वास्तविक रूप से बाद के मामले में, आप कर्सर को पुनरावृत्त भी कर सकते हैं, और जब तक संग्रह काफी छोटा नहीं होता है या आप वास्तव में इसके बजाय किसी अन्य संग्रह में आउटपुट नहीं कर सकते हैं।

$size आप जिस ऑपरेटर का उपयोग करने का प्रयास कर रहे हैं वह केवल मौजूद प्रविष्टियों की संख्या वापस करने के लिए "सरणी" पर लागू होता है। और फिर, यह केवल .aggregate() . के उपयोग के लिए मान्य है विधि।

यदि आप space . जैसे वर्णों को छोड़ना चाहते हैं एक स्ट्रिंग के भीतर फिर एक $split और $reduce $concat के साथ लागू किया जा सकता है:

db.documents.aggregate([
  { "$addFields": {
    "bodyLength": {
      "$strLenCP": {
        "$reduce": {
          "input": { "$split": [ "$name", " "] },
          "initialValue": "",
          "in": { "$concat": [ "$$value", "$$this" ] }
        }
      }
    }
  }}
])

या फिर mapReduce() . के साथ :

db.documents.mapReduce(
  function() {
    emit(this._id, "".concat.apply(this.body.split(" ")).length)
    // Or even
    // emit(this._id, this.body.split(" ").reduce((o,e) => o.concat(e),"").length)
  },
  function() { },
  { "out": { "inline": 1 } }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb में आज की तिथि सीमा में दस्तावेज़ खोजें

  2. स्क्रैपी और मोंगोडीबी के साथ वेब स्क्रैपिंग और क्रॉलिंग

  3. मोंगो खोल स्क्रिप्ट मुझे <डेटाबेस> का उपयोग शामिल नहीं करने देगी

  4. मोंगोडब में एन दस्तावेजों की संख्या कैसे हटाएं

  5. ग्रिडएफएस (जावा का उपयोग करके) में अद्यतन संचालन कैसे करें?