மோங்கோடிபி குழு திரட்டல்

Monkotipi Kulu Tirattal



திரட்டுதல் என்பது மோங்கோடிபி சேகரிப்பிலிருந்து தரவைப் பிரித்தெடுக்கும் செயல்முறையாகும். இது பல ஆவணங்களை செயலாக்குகிறது மற்றும் மதிப்பிடப்பட்ட முடிவுகளை வழங்குகிறது. மோங்கோடிபியில் உள்ள ஒருங்கிணைப்பு பல ஆபரேட்டர்கள் மற்றும் பல்வேறு பணிகளைச் செய்யும் முறைகளைக் கொண்டுள்ளது. அந்த ஆபரேட்டர்களில், $group ஆபரேட்டர் ஒவ்வொரு தனிப்பட்ட குழுவிற்கும் ஆவணங்களை குழுவாக்கி, வரையறுக்கப்பட்ட வெளிப்பாட்டின் படி அவற்றை ஒழுங்குபடுத்துகிறார். குழு ஆபரேட்டர் மோங்கோடிபியில் குறிப்பிடத்தக்கது, ஏனெனில் இது பரந்த அளவிலான தரவு கையாளுதல்களை எளிதாக்குகிறது. மோங்கோடிபி எடுத்துக்காட்டில் உள்ள $குழு திரட்டல் மற்றும் வெவ்வேறு திரட்டிகள் கீழே கொடுக்கப்பட்டுள்ளன.

மோங்கோடிபியில் குழு ஒருங்கிணைப்பு எவ்வாறு செயல்படுகிறது?

குறிப்பிட்ட _id வெளிப்பாட்டின் படி உள்ளீட்டு ஆவணங்களை குழுவாக்க $group ஆபரேட்டர் பயன்படுத்தப்பட வேண்டும். ஒவ்வொரு தனித்தனி குழுவிற்கும் மொத்த மதிப்புகள் கொண்ட ஒரு ஆவணத்தை அது அளிக்க வேண்டும். செயல்படுத்துவதைத் தொடங்க, மோங்கோடிபியில் “புத்தகங்கள்” தொகுப்பை உருவாக்கியுள்ளோம். 'புத்தகங்கள்' தொகுப்பை உருவாக்கிய பிறகு, பல்வேறு துறைகளுடன் தொடர்புடைய ஆவணங்களைச் செருகியுள்ளோம். செயல்படுத்த வேண்டிய வினவல் கீழே காட்டப்பட்டுள்ளதால், insertMany() முறை மூலம் ஆவணங்கள் சேகரிப்பில் செருகப்படுகின்றன.

>db.Books.insertMany([

{
_id:1,
தலைப்பு: 'அன்னா கரேனினா',
விலை: 290,
ஆண்டு: 1879,
ஆர்டர்_நிலை: 'இன்-ஸ்டாக்',
நூலாசிரியர்: {
'பெயர்': 'லியோ டால்ஸ்டாய்'
}
},
{
_id:2,
தலைப்பு: 'ஒரு ஏளனப் பறவையைக் கொல்ல',
விலை: 500,
ஆண்டு: 1960,
ஆர்டர்_நிலை: 'பொருட்கள் இல்லை',
நூலாசிரியர்: {
'பெயர்':'ஹார்பர் லீ'
}
},
{
_id:3,
தலைப்பு: 'கண்ணுக்கு தெரியாத மனிதன்',
விலை: 312,
ஆண்டு: 1953,
ஆர்டர்_நிலை: 'இன்-ஸ்டாக்',
நூலாசிரியர்: {
'பெயர்':'ரால்ப் எலிசன்'
}
},
{
_id:4,
தலைப்பு: 'அன்பே',
விலை: 370,
ஆண்டு: 1873,
ஆர்டர்_நிலை: 'அவுட்_ஆஃப்_ஸ்டாக்',
நூலாசிரியர்: {
'பெயர்':'டோனி மோரிசன்'
}
},
{
_id:5,
தலைப்பு: 'விஷயங்கள் வீழ்ச்சியடைகின்றன',
விலை: 200,
ஆண்டு: 1958,
ஆர்டர்_நிலை: 'இன்-ஸ்டாக்',
நூலாசிரியர்: {
'பெயர்':'சினுவா அச்செபே'
}
},
{
_id:6,
தலைப்பு: 'தி கலர் பர்பிள்',
விலை: 510,
ஆண்டு: 1982,
ஆர்டர்_நிலை: 'பொருட்கள் இல்லை',
நூலாசிரியர்: {
'பெயர்':'ஆலிஸ் வாக்கர்'
}
}
])

ஆவணங்கள் 'புத்தகங்கள்' சேகரிப்பில் எந்தப் பிழையும் ஏற்படாமல் வெற்றிகரமாகச் சேமிக்கப்படுகின்றன, ஏனெனில் வெளியீடு 'உண்மை' என ஒப்புக்கொள்ளப்படுகிறது. இப்போது, ​​'$group' தொகுப்பைச் செய்வதற்கு, 'புத்தகங்கள்' சேகரிப்பின் இந்த ஆவணங்களைப் பயன்படுத்தப் போகிறோம்.









எடுத்துக்காட்டு # 1: $group ஒருங்கிணைப்பின் பயன்பாடு



$group ஒருங்கிணைப்பின் எளிமையான பயன்பாடு இங்கே விளக்கப்பட்டுள்ளது. மொத்த வினவல் முதலில் '$குழு' ஆபரேட்டரை உள்ளீடு செய்து, பின்னர் '$குழு' ஆபரேட்டர் மேலும் குழுவாக்கப்பட்ட ஆவணங்களை உருவாக்க வெளிப்பாடுகளை எடுக்கிறது.





>db.Books.aggregate([

{ $group:{ _id:'$author.name'} }

])

$குழு ஆபரேட்டரின் மேலே உள்ள வினவல் அனைத்து உள்ளீட்டு ஆவணங்களுக்கான மொத்த மதிப்புகளைக் கணக்கிடுவதற்கு “_id” புலத்துடன் குறிப்பிடப்பட்டுள்ளது. பின்னர், '_id' புலம் '$author.name' உடன் ஒதுக்கப்பட்டது, இது '_id' புலத்தில் வேறு குழுவை உருவாக்குகிறது. $author.name இன் தனி மதிப்புகள் வழங்கப்படும், ஏனெனில் நாங்கள் எந்த திரட்டப்பட்ட மதிப்புகளையும் கணக்கிடவில்லை. $group aggregate வினவலின் செயலாக்கம் பின்வரும் வெளியீட்டைக் கொண்டுள்ளது. _id புலத்தில் ஆசிரியர்.பெயர்களின் மதிப்புகள் உள்ளன.



எடுத்துக்காட்டு # 2: $புஷ் அக்குமுலேட்டருடன் $குழு திரட்டலைப் பயன்படுத்துதல்

$group aggregation ன் உதாரணம் ஏற்கனவே மேலே குறிப்பிட்டுள்ள எந்த ஒரு திரட்டியையும் பயன்படுத்துகிறது. ஆனால் நாம் $group aggregation இல் திரட்டிகளைப் பயன்படுத்தலாம். குவிப்பான் ஆபரேட்டர்கள் '_id' இன் கீழ் 'குழுவாக' உள்ளவை அல்லாத உள்ளீட்டு ஆவண புலங்களில் பயன்படுத்தப்படுகின்றன. வெளிப்பாட்டின் புலங்களை ஒரு வரிசைக்குள் தள்ள விரும்புகிறோம் என்று வைத்துக்கொள்வோம், பின்னர் '$குழு' ஆபரேட்டரில் '$புஷ்' திரட்டி அழைக்கப்படுகிறது. '$குழுவின்' '$புஷ்' திரட்டியை இன்னும் தெளிவாகப் புரிந்துகொள்ள உதாரணம் உதவும்.

>db.Books.aggregate(

[

{ $group : { _id : '$_id', ஆண்டு: { $push: '$year' } }

]

).அழகான();

இங்கே, கொடுக்கப்பட்ட புத்தகங்களின் வெளியிடப்பட்ட ஆண்டு தேதியை வரிசையில் குழுவாக்க விரும்புகிறோம். இதை நிறைவேற்ற மேலே உள்ள வினவல் பயன்படுத்தப்பட வேண்டும். $புஷ் அக்யூமுலேட்டரைப் பயன்படுத்தி குழு ஆண்டைப் பெற, '$group' ஆபரேட்டர் புல வெளிப்பாடு '_id' மற்றும் 'year' புல வெளிப்பாடு ஆகியவற்றை எடுத்துக்கொள்வதன் மூலம் திரட்டல் வினவல் வழங்கப்படுகிறது. இந்த குறிப்பிட்ட வினவலிலிருந்து பெறப்பட்ட வெளியீடு ஆண்டு புலங்களின் வரிசையை உருவாக்கி, திரும்பிய குழுவாக்கப்பட்ட ஆவணத்தை அதனுள் சேமிக்கிறது.

எடுத்துக்காட்டு # 3: '$min' திரட்டியுடன் $குழு திரட்டலைப் பயன்படுத்துதல்

அடுத்து, சேகரிப்பில் உள்ள ஒவ்வொரு ஆவணத்திலிருந்தும் குறைந்தபட்ச பொருத்த மதிப்பைப் பெற $குழு திரட்டலில் பயன்படுத்தப்படும் “$min” திரட்டி உள்ளது. $min திரட்டிக்கான வினவல் வெளிப்பாடு கீழே கொடுக்கப்பட்டுள்ளது.

>db.Books.aggregate([

{
$குழு:{
_id:{
தலைப்பு: '$title',
ஒழுங்கு_நிலை: '$order_status'
},
குறைந்தபட்ச விலை:{$min: '$price'}
}
}
])

வினவலில் '$group' திரட்டல் வெளிப்பாடு உள்ளது, அங்கு 'தலைப்பு' மற்றும் 'order_status' புலங்களுக்கான ஆவணத்தை நாங்கள் தொகுத்துள்ளோம். பின்னர், குழுமப்படுத்தப்படாத புலங்களிலிருந்து குறைந்தபட்ச விலை மதிப்புகளைப் பெறுவதன் மூலம் ஆவணங்களைத் தொகுத்த $min திரட்டியை நாங்கள் வழங்கினோம். கீழே $min திரட்டியின் இந்த வினவலை இயக்கும்போது, ​​அது ஒரு வரிசையில் தலைப்பு மற்றும் ஒழுங்கு_நிலையின்படி குழுவாக்கப்பட்ட ஆவணங்களை வழங்குகிறது. குறைந்தபட்ச விலை முதலில் தோன்றும், மேலும் ஆவணத்தின் அதிக விலை கடைசியாக வைக்கப்படும்.

எடுத்துக்காட்டு # 4: $sum அக்யூமுலேட்டருடன் $குழு திரட்டலைப் பயன்படுத்தவும்

$குழு ஆபரேட்டரைப் பயன்படுத்தி அனைத்து எண் புலங்களின் கூட்டுத்தொகையைப் பெற, $sum குவிப்பான் செயல்பாடு பயன்படுத்தப்படுகிறது. சேகரிப்பில் உள்ள எண் அல்லாத மதிப்புகள் இந்தக் குவிப்பானால் கருதப்படுகின்றன. கூடுதலாக, இங்கே $group aggregation உடன் $match aggregation ஐப் பயன்படுத்துகிறோம். $match திரட்டல் ஒரு ஆவணத்தில் கொடுக்கப்பட்டுள்ள வினவல் நிபந்தனைகளை ஏற்றுக்கொள்கிறது மற்றும் பொருந்திய ஆவணத்தை $group aggregation க்கு அனுப்புகிறது, அது ஒவ்வொரு குழுவிற்கும் ஆவணத்தின் தொகையை வழங்கும். $தொகை திரட்டிக்கு, வினவல் கீழே கொடுக்கப்பட்டுள்ளது.

>db.Books.aggregate([

{ $match:{ order_status:'இன்-ஸ்டாக்'}},

{ $group:{ _id:'$author.name', மொத்த புத்தகங்கள்: { $sum:1 } }

}])

மேலே உள்ள திரட்டல் வினவல் $match ஆபரேட்டருடன் தொடங்குகிறது, இது அனைத்து 'order_status' க்கும் பொருந்தும், அதன் நிலை 'இன்-ஸ்டாக்' மற்றும் $குழுவிற்கு உள்ளீடாக அனுப்பப்பட்டது. பின்னர், $குழு ஆபரேட்டருக்கு $sum accumulator வெளிப்பாடு உள்ளது, இது பங்குகளில் உள்ள அனைத்து புத்தகங்களின் கூட்டுத்தொகையையும் வெளியிடுகிறது. '$sum:1' ஒரே குழுவிற்குச் சொந்தமான ஒவ்வொரு ஆவணத்திற்கும் 1ஐச் சேர்க்கிறது என்பதை நினைவில் கொள்ளவும். இங்குள்ள வெளியீடு 'இன்-ஸ்டாக்' உடன் தொடர்புடைய 'ஆர்டர்_ஸ்டேட்டஸ்' கொண்ட இரண்டு குழுவாக்கப்பட்ட ஆவணங்களை மட்டுமே காட்டுகிறது.

எடுத்துக்காட்டு # 5: $sort திரட்டலுடன் $group ஒருங்கிணைப்பைப் பயன்படுத்தவும்

இங்கே $குழு ஆபரேட்டர் '$sort' ஆபரேட்டருடன் பயன்படுத்தப்படுகிறது, இது குழுவாக்கப்பட்ட ஆவணங்களை வரிசைப்படுத்தப் பயன்படுகிறது. பின்வரும் வினவல் வரிசைப்படுத்தும் செயல்பாட்டிற்கு மூன்று படிகளைக் கொண்டுள்ளது. முதலில் $match நிலை, பின்னர் $குழு நிலை, மற்றும் கடைசி $sort நிலை இது குழுவாக்கப்பட்ட ஆவணத்தை வரிசைப்படுத்துகிறது.

>db.Books.aggregate([

{ $match:{ order_status:'out-of-stock'}},

{ $group:{ _id:{ authorName :'$author.name'}, மொத்த புத்தகங்கள்: { $sum:1} } },

{$sort:{ authorName:1}}

])

இங்கே, 'ஆர்டர்_நிலை' கையிருப்பில் இல்லாத பொருந்திய ஆவணத்தைப் பெற்றுள்ளோம். பின்னர், பொருந்திய ஆவணமானது $குழு கட்டத்தில் உள்ளீடு செய்யப்படுகிறது, இது ஆவணத்தை “authorName” மற்றும் “totalBooks” புலத்துடன் தொகுத்தது. $குழுவின் வெளிப்பாடு $sum accumulator உடன் மொத்த 'அவுட்-ஆஃப்-ஸ்டாக்' புத்தகங்களுடன் தொடர்புடையது. குழுவாக்கப்பட்ட ஆவணங்கள் $sort வெளிப்பாட்டைக் கொண்டு ஏறுவரிசையில் '1' என்பது ஏறுவரிசையைக் குறிக்கிறது. குறிப்பிட்ட வரிசையில் வரிசைப்படுத்தப்பட்ட குழு ஆவணம் பின்வரும் வெளியீட்டில் பெறப்படுகிறது.

எடுத்துக்காட்டு # 6: தனித்துவமான மதிப்புக்கு $group திரட்டலைப் பயன்படுத்தவும்

ஒருங்கிணைக்கும் செயல்முறையானது $குழு ஆபரேட்டரைப் பயன்படுத்தி, தனித்தனியான உருப்படி மதிப்புகளைப் பிரித்தெடுக்க, ஆவணங்களை உருப்படியாகக் குழுவாக்குகிறது. இந்த அறிக்கையின் வினவல் வெளிப்பாடு MongoDB இல் இருக்கட்டும்.

>db.Books.aggregate( [ { $group : { _id : '$title' } ] ).pretty();

குழு ஆவணத்தின் தனித்துவமான மதிப்பைப் பெற, தொகுப்பு வினவல் புத்தகங்களின் சேகரிப்பில் பயன்படுத்தப்படுகிறது. இங்குள்ள $group ஆனது _id வெளிப்பாட்டை எடுக்கிறது, இது நாம் 'தலைப்பு' புலத்தை உள்ளிடுவதால், தனித்துவமான மதிப்புகளை வெளியிடுகிறது. _id புலத்திற்கு எதிராக தலைப்புப் பெயர்களின் குழுவைக் கொண்ட இந்த வினவலை இயக்கும்போது குழு ஆவணத்தின் வெளியீடு பெறப்படுகிறது.

முடிவுரை

MongoDB தரவுத்தளத்தில் ஆவணத்தைக் குழுவாக்க $group aggregation ஆபரேட்டரின் கருத்தை அழிக்க வழிகாட்டி நோக்கமாக உள்ளது. மோங்கோடிபி மொத்த அணுகுமுறையானது குழுவாக்கும் நிகழ்வுகளை மேம்படுத்துகிறது. $group ஆபரேட்டரின் தொடரியல் அமைப்பு எடுத்துக்காட்டு நிரல்களுடன் நிரூபிக்கப்பட்டுள்ளது. $குழு ஆபரேட்டர்களின் அடிப்படை உதாரணத்திற்கு கூடுதலாக, $push, $min, $sum போன்ற சில திரட்டிகள் மற்றும் $match மற்றும் $sort போன்ற ஆபரேட்டர்களுடன் இந்த ஆபரேட்டரைப் பயன்படுத்தியுள்ளோம்.