MongoDB में $unwind का उपयोग करके एकल सरणी बनाना
MongoDB में कई सरणियों को एक ही सरणी में संयोजित करने के लिए, आप aggregation pipeline में $unwind ऑपरेटर का उपयोग कर सकते हैं। यह प्रत्येक सरणी तत्व को अलग-अलग दस्तावेज़ में बदल देता है।
नमूना डेटा बनाना
> db.demo289.insertOne({"Section":["A","B","E"],"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c06fcf49383b52759cbc3") }
> db.demo289.insertOne({"Section":["C","D","B"],"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c070af49383b52759cbc4") }
सभी दस्तावेज़ प्रदर्शित करना
> db.demo289.find().pretty();
आउटपुट:
{
"_id" : ObjectId("5e4c06fcf49383b52759cbc3"),
"Section" : [ "A", "B", "E" ],
"Name" : "Chris"
}
{
"_id" : ObjectId("5e4c070af49383b52759cbc4"),
"Section" : [ "C", "D", "B" ],
"Name" : "David"
}
$unwind का उपयोग करके सरणी तत्वों को अलग करना
> db.demo289.aggregate({ $unwind : "$Section" } );
आउटपुट:
{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "A", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "B", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "E", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "C", "Name" : "David" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "D", "Name" : "David" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "B", "Name" : "David" }
व्याख्या
$unwindसरणी फ़ील्डSectionको डी-कंस्ट्रक्ट करता है।- प्रत्येक सरणी तत्व के लिए एक अलग दस्तावेज़ बनाता है।
- अन्य फ़ील्ड (
Name) प्रत्येक नए दस्तावेज़ में दोहराए जाते हैं।
यह तकनीक तब उपयोगी होती है जब आपको सरणी तत्वों पर व्यक्तिगत रूप से काम करने की आवश्यकता होती है, जैसे फ़िल्टरिंग, समूहीकरण या गणना करना।