Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

क्या MongoDB में स्लाइस चेन प्राप्त करना संभव है?

MongoDB एग्रीगेशन से स्लाइस-ऑफ-स्लाइस (स्लाइस चेन) प्राप्त करना

MongoDB में मल्टीडाइमेंशनल ऐरे से नेस्टेड स्लाइसिंग (स्लाइस का स्लाइस) करने के लिए एग्रीगेशन पाइपलाइन में मल्टीपल $unwind और $group का उपयोग करें।

उदाहरण: मल्टीडाइमेंशनल ऐरे वाला डॉक्यूमेंट बनाना

> db.sliceOfSliceDemo.insertOne(
...   {
...     "Name": "John",
...     "Details": [["First 1:1", "First 1:2"],["second 2:1","Second 2:2"]]
...   }
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5ccf3fcfdceb9a92e6aa195a") }

डॉक्यूमेंट देखना

> db.sliceOfSliceDemo.find().pretty();

आउटपुट:

{ "_id" : ObjectId("5ccf3fcfdceb9a92e6aa195a"), "Name" : "John", "Details" : [ [ "First 1:1", "First 1:2" ], [ "second 2:1", "Second 2:2" ] ] }

स्लाइस चेन क्वेरी: अंतिम एलिमेंट प्राप्त करना

> db.sliceOfSliceDemo.aggregate([
...   {$match:{"Name":"John"}},
...   {$unwind:"$Details"},
...   {$unwind:"$Details"},
...   {$group:{"_id":"$Name","Details":{$last:"$Details"}}},
...   {$project:{"Name":"$_id","Details":1}}
... ]);

आउटपुट:

{ "_id" : "John", "Details" : "Second 2:2", "Name" : "John" }

पाइपलाइन समझ:

  1. $match - "John" नाम वाले डॉक्यूमेंट्स फिल्टर
  2. पहला $unwind: "$Details" - बाहरी ऐरे फ्लैट: ["First 1:1", "First 1:2"] और ["second 2:1", "Second 2:2"]
  3. दूसरा $unwind: "$Details" - आंतरिक ऐरे फ्लैट: अलग-अलग स्ट्रिंग्स
  4. $group - नाम द्वारा ग्रुप, $last से अंतिम एलिमेंट लेता है
  5. $project - आउटपुट फॉर्मेट करता है

आधुनिक विकल्प (MongoDB 4.4+):

db.sliceOfSliceDemo.aggregate([
  { $match: { Name: "John" } },
  { $project: {
    Name: 1,
    LastElement: { $arrayElemAt: ["$Details", -1] }  // अंतिम सब-ऐरे
  }},
  { $project: {
    Name: 1,
    LastElement: { $arrayElemAt: ["$LastElement", -1] }  // अंतिम एलिमेंट
  }}
]);

यह अधिक पढ़ने योग्य और कुशल है।

  1. - MongoDB में कई बार पुश और स्लाइस कैसे करें?

    MongoDB में पुश और स्लाइस करने के लिए, $push और $slice का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo656.insertOne({Name:John}); { acknowledged : true, insertedId : ObjectId(5ea060264deddd72997713cf) } find() मेथड की मदद से संग्रह के सभी दस्तावेज़ प्रदर्शित करें: > db.demo656

  1. - MongoDB Capped Collection का उपयोग करना

    हाँ, आप capped collection उपयोग कर सकते हैं। Capped collections fixed-size collections होते हैं जो high-throughput operations support करते हैं जो insertion order के आधार पर documents insert और retrieve करते हैं। Capped Collection बनाना > db.createCollection(demo539, { capped : true, size :100, m

  1. - MongoDB क्वेरी: ऐरे के केवल एक एलिमेंट को स्लाइस करें

    ऐरे के केवल एक एलिमेंट को स्लाइस करने के लिए, MongoDB में $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo579.insertOne( { _id: 101, details: { FirstName: John }, Marks: [56,78,90,34,45,74] } ); { acknowledged : true, insertedId : 101 }