MongoDB में, $mod
एकत्रीकरण पाइपलाइन ऑपरेटर एक संख्या को दूसरे से विभाजित करता है और शेष को लौटाता है।
$mod
का उपयोग करने के लिए , दो संख्याओं को एक सरणी में पास करें। $mod
ऑपरेटर पहली संख्या को दूसरी संख्या से विभाजित करेगा और शेष को वापस कर देगा। दूसरे शब्दों में, पहली संख्या लाभांश है, और दूसरी संख्या भाजक है।
तर्क कोई भी मान्य व्यंजक हो सकते हैं, जब तक कि वे संख्याओं का समाधान करते हैं।
उदाहरण
मान लीजिए हमारे पास data
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "a" : 10, "b" : 2 } { "_id" : 2, "a" : 10, "b" : 3 } { "_id" : 3, "a" : 10.5, "b" : 2 }
हम $mod
. का उपयोग कर सकते हैं एक एकत्रीकरण पाइपलाइन के भीतर ऑपरेटर a
. को विभाजित करने के लिए b
. द्वारा फ़ील्ड फ़ील्ड, और शेष लौटाएँ:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", "$b" ] } }
}
]
)
परिणाम:
{ "a" : 10, "b" : 2, "result" : 0 } { "a" : 10, "b" : 3, "result" : 1 } { "a" : 10.5, "b" : 2, "result" : 0.5 }
दूसरे शब्दों में, हमें a
. मिलता है मॉड्यूल b
।
अगर हम b
get प्राप्त करना चाहते हैं मॉड्यूल a
, हमें उनकी अदला-बदली करनी होगी।
उदाहरण:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$b", "$a" ] } }
}
]
)
परिणाम:
{ "a" : 10, "b" : 2, "result" : 2 } { "a" : 10, "b" : 3, "result" : 3 } { "a" : 10.5, "b" : 2, "result" : 2 }
नकारात्मक संख्याएं
मान लीजिए हम अपने संग्रह में निम्नलिखित दस्तावेज़ जोड़ते हैं:
{ "_id" : 4, "a" : -10, "b" : 3 } { "_id" : 5, "a" : 10, "b" : -3 } { "_id" : 6, "a" : -10, "b" : -3 }
इनमें ऋणात्मक संख्याएँ शामिल हैं। लेकिन यह कोई समस्या नहीं है, क्योंकि ऋणात्मक संख्याएं अभी भी संख्याएं हैं, और ऋणात्मक संख्याओं के साथ काम करते समय हम निश्चित रूप से मॉड्यूल प्राप्त कर सकते हैं।
उदाहरण:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 4, 5, 6 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", "$b" ] } }
}
]
)
परिणाम:
{ "a" : -10, "b" : 3, "result" : -1 } { "a" : 10, "b" : -3, "result" : 1 } { "a" : -10, "b" : -3, "result" : -1 }
गलत डेटा प्रकार
$mod
. को दिए गए तर्क कोई भी मान्य व्यंजक हो सकता है, जब तक कि वे संख्याओं का समाधान करते हैं।
मान लीजिए हमारे पास निम्नलिखित दस्तावेज़ हैं:
{ "_id" : 7, "a" : "Ten", "b" : 2 }
और हम $mod
. लागू करते हैं उस दस्तावेज़ के लिए:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 7 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", "$b" ] } }
}
]
)
परिणाम:
uncaught exception: Error: command failed: { "ok" : 0, "errmsg" : "$mod only supports numeric types, not string and double", "code" : 16611, "codeName" : "Location16611" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:639:17 [email protected]/mongo/shell/assert.js:729:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1058:12 @(shell):1:1
त्रुटि बताती है कि $mod only supports numeric types
।
शून्य मान
null
प्रदान करना किसी भी तर्क के लिए रिटर्न null
।
मान लीजिए हमारे पास निम्नलिखित दस्तावेज हैं:
{ "_id" : 8, "a" : 10, "b" : null } { "_id" : 9, "a" : null, "b" : 10 } { "_id" : 10, "a" : null, "b" : null }
और हम $mod
. लागू करते हैं उन दस्तावेज़ों के लिए:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 8, 9, 10 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", "$b" ] } }
}
]
)
परिणाम:
{ "a" : 10, "b" : null, "result" : null } { "a" : null, "b" : 10, "result" : null } { "a" : null, "b" : null, "result" : null }
अनुपलब्ध फ़ील्ड
अनुपलब्ध फ़ील्ड null
लौटाते हैं ।
मान लीजिए हमारे पास निम्नलिखित दस्तावेज हैं:
{ "_id" : 11, "a" : 10 } { "_id" : 12, "b" : 2 } { "_id" : 13 }
$mod
Apply लागू करें :
db.data.aggregate(
[
{ $match: { _id: { $in: [ 11, 12, 13 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", "$b" ] } }
}
]
)
परिणाम:
{ "a" : 10, "result" : null } { "b" : 2, "result" : null } { "result" : null }
अपना खुद का नंबर जोड़ें
जरूरी नहीं कि आप दस्तावेज़/दस्तावेज़ों में केवल संख्याओं तक ही सीमित हों। यदि आप किसी फ़ील्ड को एक निश्चित राशि से विभाजित करना चाहते हैं, तो आप अपने स्वयं के नंबरों का उपयोग कर सकते हैं।
उदाहरण:
db.data.aggregate(
[
{ $match: { _id: { $in: [ 1, 2, 3 ] } } },
{ $project: {
_id: 0,
a: 1,
b: 1,
result: { $mod: [ "$a", 5.2 ] } }
}
]
)
परिणाम:
{ "a" : 10, "b" : 2, "result" : 4.8 } { "a" : 10, "b" : 3, "result" : 4.8 } { "a" : 10.5, "b" : 2, "result" : 0.09999999999999964 }