MongoDB में, आप $push
. का उपयोग कर सकते हैं किसी सरणी में मान जोड़ने के लिए ऑपरेटर।
आप सरणी में मान की स्थिति, सरणी में तत्वों के क्रम, कई मानों को जोड़ने, आदि को निर्दिष्ट करने के लिए विभिन्न संशोधक का उपयोग कर सकते हैं।
उदाहरण
मान लीजिए हमारे पास products
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
db.products.find()
परिणाम:
{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "product" : "Cap", "sizes" : [ "M", "L" ] }
और मान लें कि हम दस्तावेज़ 3 में सरणी में एक मान जोड़ना चाहते हैं।
हम $push
. का उपयोग कर सकते हैं update()
. के संयोजन के साथ मान जोड़ने के लिए:
db.products.update(
{ _id: 3 },
{ $push: { sizes: "XL" } }
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
आइए परिवर्तन को सत्यापित करने के लिए संग्रह को फिर से देखें:
db.products.find()
परिणाम:
{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "product" : "Cap", "sizes" : [ "M", "L", "XL" ] }
किसी निश्चित स्थान पर मान डालें
आप $each
. का उपयोग कर सकते हैं और $position
संशोधक यह निर्दिष्ट करने के लिए कि मान को सरणी में कहाँ डाला जाना चाहिए।
उदाहरण के लिए, हम 0
. के मान का उपयोग कर सकते हैं इसे सरणी की शुरुआत में सम्मिलित करने के लिए।
उदाहरण:
db.products.update(
{ _id: 3 },
{
$push: {
sizes: {
$each: [ "S" ],
$position: 0
}
}
}
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
$each
संशोधक सरणी फ़ील्ड में कई मान जोड़ता है। इस मामले में हमने केवल एक मान को सरणी में डाला, हालांकि, $position
. का उपयोग करने के लिए संशोधक, यह $each
. के साथ प्रकट होना चाहिए संशोधक।
आइए फिर से संग्रह की जाँच करें:
db.products.find()
परिणाम:
{ "_id" : 1, "product" : "Bat", "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : "Hat", "sizes" : [ "S", "L", "XL" ] } { "_id" : 3, "product" : "Cap", "sizes" : [ "S", "M", "L", "XL" ] }
जोड़ें और क्रमबद्ध करें
मान लीजिए कि हमारे पास निम्नलिखित दस्तावेजों के साथ एक संग्रह है:
db.players.find()
परिणाम:
{ "_id" : 1, "scores" : [ 1, 5, 3 ] } { "_id" : 2, "scores" : [ 8, 17, 18 ] } { "_id" : 3, "scores" : [ 15, 11, 8 ] }
और मान लीजिए कि हम दस्तावेज़ 3 में सरणी में कुछ मान जोड़ना चाहते हैं, लेकिन हम मान जोड़ने के बाद सरणी को आरोही क्रम में भी सॉर्ट करना चाहते हैं।
हम यह कर सकते हैं:
db.players.update(
{ _id: 3 },
{
$push: {
scores: {
$each: [ 5, 12 ],
$sort: 1
}
}
}
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
अब जब हम संग्रह को देखते हैं, तो हम देख सकते हैं कि तीसरे दस्तावेज़ को तदनुसार संशोधित किया गया है।
db.players.find()
परिणाम:
{ "_id" : 1, "scores" : [ 1, 5, 3 ] } { "_id" : 2, "scores" : [ 8, 17, 18 ] } { "_id" : 3, "scores" : [ 5, 8, 11, 12, 15 ] }
इसे अवरोही क्रम में क्रमबद्ध करने के लिए, $sort: -1
. का उपयोग करें ।
सरणी को स्लाइस करें
आप $slice
. का उपयोग कर सकते हैं सरणी में तत्वों की संख्या को सीमित करने के लिए संशोधक।
उदाहरण के लिए, आइए सरणी में एक और मान जोड़ें, लेकिन फिर सरणी को एक निश्चित संख्या में तत्वों में विभाजित करें।
db.players.update(
{ _id: 3 },
{
$push: {
scores: {
$each: [ 3 ],
$slice: 3
}
}
}
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
आइए अब संग्रह को फिर से देखें:
db.players.find()
परिणाम:
{ "_id" : 1, "scores" : [ 1, 5, 3 ] } { "_id" : 2, "scores" : [ 8, 17, 18 ] } { "_id" : 3, "scores" : [ 5, 8, 11 ] }
इस मामले में, सरणी को काट दिया गया था, लेकिन हमने जो मूल्य जोड़ा वह अंतिम सरणी में भी समाप्त नहीं हुआ। ऐसा इसलिए है क्योंकि मान को सरणी में जोड़ा गया था और हमने $sort
. का उपयोग नहीं किया था ऑपरेशन, और इसलिए सरणी के पहले तीन तत्वों में कटा हुआ होने से पहले मान सरणी के अंत में बना रहा।
यहाँ यह फिर से है, इस समय को छोड़कर $sort
. के साथ संशोधक।
db.players.update(
{ _id: 3 },
{
$push: {
scores: {
$each: [ 3 ],
$sort: 1,
$slice: 3
}
}
}
)
आउटपुट:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
संग्रह की जाँच करें:
db.players.find()
परिणाम:
{ "_id" : 1, "scores" : [ 1, 5, 3 ] } { "_id" : 2, "scores" : [ 8, 17, 18 ] } { "_id" : 3, "scores" : [ 3, 5, 8 ] }
मान केवल तभी जोड़ें जब वह मौजूद न हो
यदि आप चाहते हैं कि मान केवल तभी जोड़ा जाए जब वह पहले से ही सरणी में मौजूद न हो, तो $addToSet
का उपयोग करने पर विचार करें ऑपरेटर।