MongoDB में स्ट्रिंग फील्ड के केवल पहले N वर्ण प्राप्त करने के लिए एग्रीगेशन में $substr (या $substrBytes/$substrCP) ऑपरेटर का उपयोग करें।
उदाहरण
लंबे शीर्षक वाले दस्तावेज़ बनाएं:
> db.limitTheNumberOfCharactersDemo.insertOne({"Title": "MongoDB is No SQL database"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf23013b64a577be5a2bc0e") }
> db.limitTheNumberOfCharactersDemo.insertOne({"Title": "MySQL is a relational database"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cf2302db64a577be5a2bc0f") }
दस्तावेज़ देखें:
> db.limitTheNumberOfCharactersDemo.find().pretty();
{ "_id" : ObjectId("5cf23013b64a577be5a2bc0e"), "Title" : "MongoDB is No SQL database" }
{ "_id" : ObjectId("5cf2302db64a577be5a2bc0f"), "Title" : "MySQL is a relational database" }
पहले 20 वर्ण प्राप्त करें
> db.limitTheNumberOfCharactersDemo.aggregate([
{
$project: {
Characters: { $substr: ["$Title", 0, 20] }
}
}
]);
आउटपुट:
{ "_id" : ObjectId("5cf23013b64a577be5a2bc0e"), "Characters" : "MongoDB is No SQL da" }
{ "_id" : ObjectId("5cf2302db64a577be5a2bc0f"), "Characters" : "MySQL is a relationa" }
व्याख्या:
$substr: [string, start, length]- स्ट्रिंग से सबस्ट्रिंग निकालता है0- शुरुआत से (0-आधारित इंडेक्स)20- 20 वर्ण की लंबाई
आधुनिक ऑपरेटर (MongoDB 3.4+)
| ऑपरेटर | व्यवहार |
|---|---|
$substrBytes | बाइट-आधारित (UTF-8 में बहु-बाइट वर्ण काट सकते हैं) |
$substrCP | कोड पॉइंट-आधारित (यूनिकोड वर्ण सही गिनता है) |
अनुशंसा: यूनिकोड/हिंदी टेक्स्ट के लिए $substrCP उपयोग करें:
{$project: {preview: {$substrCP: ["$Title", 0, 50]}}}
उपयोग: सूची दृश्य, पूर्वावलोकन, खोज परिणाम स्निपेट के लिए उपयोगी।