Paano Gumawa ng Natatanging Index sa MongoDB

Paano Gumawa Ng Natatanging Index Sa Mongodb



Sa MongoDB, tinitiyak ng isang natatanging index na ang bawat halaga sa isang partikular na field o grupo ng mga field sa loob ng isang koleksyon ay natatangi. Gamit ang paraan ng createIndex(), maaari tayong gumawa ng natatanging index field para sa partikular na koleksyon. Para sa layunin ng pagpapanatili ng integridad ng data at pag-iwas sa mga duplicate na entry sa mahahalagang field, nakakatulong ang mga natatanging index. Sinasaklaw ng artikulo ang mga paraan upang lumikha ng isang natatanging index para sa partikular na koleksyon. db.candidates.insertMany([

{ pangalan: 'Alexa Bill' , grado: 'A' , kurso: 'python' },

{ pangalan: 'Jane Marks' , grado: 'B' , kurso: 'java' },

{ pangalan: 'Paul Ken' , grado: 'C' , kurso: 'C#' },

{ pangalan: 'Emily Jeo' , grado: 'D' , kurso: 'php' }

]);

Maaari din kaming lumikha ng isang natatanging index field kapag ang koleksyon ay naroroon na may ilang mga dokumento sa loob nito. Para dito, inilalagay namin ang dokumento sa bagong koleksyon na 'mga kandidato' na ang query para sa pagpasok ay ibinigay tulad ng sumusunod:







Halimbawa 1: Gumawa ng Natatanging Index ng Iisang Field

Maaari tayong lumikha ng index gamit ang createIndex() na paraan at maaari nating gawing kakaiba ang field na iyon sa pamamagitan ng pagtukoy sa natatanging opsyon na may Boolean na “true”.



db.candidates.createIndex( { grade: 1 }, { unique: true } )

Dito, sinisimulan namin ang paraan ng createIndex() sa koleksyon ng 'mga kandidato' upang lumikha ng isang natatanging index ng isang partikular na field. Pagkatapos, ibinibigay namin ang field na 'grado' na may halagang '1' para sa detalye ng index. Ang halaga ng '1' dito ay kumakatawan sa pataas na index ng koleksyon. Susunod, tinukoy namin ang opsyong 'natatangi' na may 'totoo' na halaga upang ipatupad ang pagiging natatangi ng field na 'grado'.



Ang output ay kumakatawan na ang natatanging index sa field na 'grado' ay nilikha para sa koleksyon ng 'mga kandidato':





Halimbawa 2: Gumawa ng Natatanging Index ng Higit sa Isang Field

Sa nakaraang halimbawa, isang field lang ang ginawa bilang isang natatanging index. Ngunit maaari rin tayong lumikha ng dalawang field bilang isang natatanging index nang sabay-sabay gamit ang createIndex() na paraan.



db.candidates.createIndex( { grade: 1 , kurso: 1 }, { unique: true } )

Dito, tinatawag namin ang paraan ng createIndex() sa parehong koleksyon ng 'mga kandidato'. Tinukoy namin ang dalawang field sa paraan ng createIndex() - 'grado' at 'kurso' - na may halagang '1' bilang unang expression. Pagkatapos, itinakda namin ang natatanging opsyon na may 'tunay' na halaga upang gawin ang dalawang natatanging field na ito.

Ang output ay kumakatawan sa dalawang natatanging index, 'grade_1' at 'course_1', para sa sumusunod na koleksyon ng 'kandidato':

Halimbawa 3: Gumawa ng Compound Unique Index ng mga Field

Gayunpaman, maaari rin kaming lumikha ng isang natatanging compound index sa loob ng parehong koleksyon nang sabay-sabay. Nakamit namin ito sa pamamagitan ng sumusunod na query:

db.candidates.createIndex( { pangalan: 1 , grado: 1 , kurso: 1 }, { unique: true }

Muli naming ginagamit ang paraan ng createIndex() upang lumikha ng natatanging index ng tambalang para sa koleksyon ng 'mga kandidato.' Sa pagkakataong ito, pumasa tayo sa tatlong field – “grado”, “pangalan,” at “kurso” – na nagsisilbing pataas na mga field ng index para sa koleksyon ng “mga kandidato”. Susunod, tinatawag namin ang opsyong 'natatangi' upang gawing natatangi ang field dahil itinalaga ang 'totoo' laban sa opsyong iyon.

Ang output ay nagpapakita ng mga resulta na nagpapakita na ang lahat ng tatlong mga field ay ang natatanging index ng tinukoy na koleksyon:

Halimbawa 4: Gumawa ng Natatanging Index ng Mga Duplicate na Value ng Field

Ngayon, sinusubukan naming gawin ang natatanging index para sa duplicate na value ng field na nagti-trigger ng error para mapanatili ang uniqueness constraint.

db.candidates.createIndex({pangalan: 1 },{natatangi:totoo})

Dito, inilalapat namin ang natatanging pamantayan sa index para sa field na naglalaman ng mga katulad na halaga. Sa loob ng paraan ng createIndex(), tinatawag namin ang field na 'pangalan' na may halagang '1' upang gawin itong isang natatanging index at tukuyin ang natatanging opsyon na may 'totoo' na halaga. Dahil ang dalawang dokumento ay may field na 'pangalan' na may magkaparehong mga halaga, hindi namin maaaring gawin ang field na ito na isang natatanging index ng koleksyon ng 'mga kandidato.' Na-trigger ang duplicate na key error sa pagpapatupad ng query.

Tulad ng inaasahan, ang output ay bumubuo ng mga resulta dahil ang field ng pangalan ay may parehong mga halaga para sa dalawang magkaibang mga dokumento:

Kaya, ina-update namin ang koleksyon ng 'mga kandidato' sa pamamagitan ng pagbibigay ng natatanging halaga sa bawat field ng 'pangalan' sa dokumento at pagkatapos ay gagawa kami ng field na 'pangalan' bilang natatanging index. Ang pagsasagawa ng query na iyon ay karaniwang lumilikha ng field na 'pangalan' bilang natatanging index tulad ng ipinapakita sa sumusunod:

Halimbawa 5: Gumawa ng Natatanging Index ng Nawawalang Field

Bilang kahalili, inilalapat namin ang paraan ng createIndex() sa field na hindi umiiral sa alinman sa mga dokumento ng koleksyon. Bilang resulta, nag-iimbak ang index ng null value laban sa field na iyon, at nabigo ang operasyon dahil sa isang paglabag sa value ng field.

db.candidates.createIndex( { email: 1 }, { unique: true } )

Dito, ginagamit namin ang createIndex() na paraan kung saan ang field na 'email' ay binibigyan ng halaga na '1'. Ang field na 'email' ay hindi umiiral sa koleksyon ng 'mga kandidato' at sinusubukan naming gawin itong isang natatanging index para sa koleksyon ng 'mga kandidato' sa pamamagitan ng pagtatakda ng natatanging opsyon sa 'totoo'.

Kapag naisakatuparan ang query para dito, nakukuha namin ang error sa output dahil nawawala ang field na 'email' sa koleksyon ng 'mga kandidato':

Halimbawa 6: Gumawa ng Natatanging Index ng isang Field na may Kalat na Opsyon

Susunod, ang natatanging index ay maaari ding malikha gamit ang kalat-kalat na opsyon. Ang functionality ng isang sparse index ay kasama lamang nito ang mga dokumentong may naka-index na field, hindi kasama ang mga dokumentong walang naka-index na field. Ibinigay namin ang sumusunod na istraktura upang i-setup ang kalat-kalat na opsyon:

db.candidates.createIndex( { course : 1 },

{ pangalan: 'unique_sparse_course_index' , kakaiba: totoo, kalat-kalat: totoo } )

Dito, ibinibigay namin ang paraan ng createIndex() kung saan nakatakda ang field na 'course' na may value na '1'. Pagkatapos nito, tinukoy namin ang karagdagang opsyon upang magtakda ng natatanging index field na 'course'. Kasama sa mga opsyon ang 'pangalan' na nagtatakda ng index ng 'natatanging_sparse_course_index'. Pagkatapos, mayroon kaming 'natatanging' opsyon na tinukoy sa 'true' na halaga at ang 'sparse' na opsyon ay nakatakda din sa 'true'.

Lumilikha ang output ng natatangi at kalat-kalat na index sa field na 'course' tulad ng ipinapakita sa sumusunod:

Halimbawa 7: Ipakita ang Nilikhang Natatanging Index Gamit ang GetIndexes() Method

Sa nakaraang halimbawa, isang natatanging index lamang ang ginawa para sa ibinigay na koleksyon. Upang tingnan at makuha ang impormasyon sa mga natatanging index para sa koleksyon ng 'mga kandidato,' ginagamit namin ang sumusunod na getIndexes() na pamamaraan:

db.candidates.getIndexes();

Dito, tinatawag namin ang getIndexes() function sa koleksyon ng 'mga kandidato'. Ibinabalik ng getIndexes() ang lahat ng index field para sa koleksyon ng 'mga kandidato' na ginawa namin sa mga nakaraang halimbawa.

Ipinapakita ng output ang natatanging index na ginawa namin para sa koleksyon: alinman sa isang natatanging index, compound index, o ang natatanging hiwa-hiwalay na index:

Konklusyon

Sinubukan naming lumikha ng natatanging index para sa mga partikular na field ng koleksyon. Ginalugad namin ang iba't ibang paraan upang lumikha ng natatanging index para sa isang field at maramihang field. Sinubukan din naming lumikha ng isang natatanging index kung saan nabigo ang operasyon dahil sa isang natatanging paglabag sa pagpilit.