Mongodb ensisijainen avain: Esimerkki _id-kentän asettamisesta ObjectId()
⚡ Älykäs yhteenveto
MongoDB Ensisijainen avain on _id-kenttä, joka yksilöi yksilöllisesti jokaisen kokoelman dokumentin. Oletusarvoisesti se sisältää automaattisesti luodun ObjectId:n, mutta voit myös määrittää oman arvon _id-kenttään dokumenttia lisätessäsi.

Mikä on ensisijainen avain MongoDB?
In MongoDB, _id -kenttä kokoelman ensisijaisena avaimena, jotta jokainen asiakirja voidaan yksilöidä kokoelmassa. _id-kenttä sisältää yksilöllisen ObjectID-arvon.
Oletuksena lisättäessä asiakirjoja kokoelmaan, jos et lisää kentän nimeä _id:n kanssa kentän nimeen, MongoDB lisää automaattisesti Object id -kentän alla olevan kuvan mukaisesti
Kun teet kyselyn kokoelman asiakirjoista, näet jokaisen kokoelman asiakirjan ObjectId:n.
Jos haluat varmistaa sen MongoDB ei luo _id-kenttää kokoelmaa luotaessa, ja jos haluat määrittää oman tunnuksesi kokoelman _id:ksi, sinun on määritettävä tämä erikseen kokoelmaa luotaessa.
Kun luot nimenomaisesti id-kentän, sen nimessä on oltava _id.
Katsotaanpa esimerkkiä, kuinka voimme saavuttaa tämän.
db.Employee.insert({_id:10, "EmployeeName" : "Smith"})
Code Selitys:
- Oletamme, että luomme kokoelman ensimmäistä dokumenttia, ja siksi yllä olevassa lauseessa kokoelmaa luotaessa määritämme kentän _id ja määritämme sille arvon.
Jos komento suoritetaan onnistuneesti ja käytä nyt hakukomentoa kokoelman dokumenttien näyttämiseen, näytetään seuraava tulos
lähtö:
Tulos osoittaa selvästi, että _id-kenttää, jonka määritimme kokoelmaa luotaessa, käytetään nyt kokoelman ensisijaisena avaimena.
Mikä on ObjectId? MongoDB?
ObjectId on oletusarvoinen arvotyyppi, joka MongoDB määrittää _id-pääavaimelle. Se on 12-tavuinen tunniste, joka on suunniteltu globaalisti yksilölliseksi palvelimien ja kokoelmien välillä, joten kaksi dokumenttia ei juuri koskaan saa samaa arvoa. Koska asiakasohjain voi luoda ObjectId:n kysymättä palvelimelta, MongoDB voi syöttää asiakirjoja nopeasti ja skaalautua useiden koneiden välillä ilman keskitettyä laskuria.
Jokainen ObjectId tallennetaan kompaktissa binäärimuodossa, mutta se näytetään 24-merkkisenä heksadesimaalimerkkijonona, esimerkiksi ObjectId("507f1f77bcf86cd799439011"). Ensimmäiset tavut perustuvat nykyiseen aikaan, mikä tarkoittaa, että arvot kasvavat tasaisesti asiakirjoja luotaessa. Tämä tekee ObjectId:stä paitsi ainutlaatuisen myös karkeasti lajiteltavan lisäysjärjestyksen mukaan, mikä on hyödyllinen ominaisuus, kun haluat uusimmat tai vanhimmat tietueet ensin.
Rakenne MongoDB ObjectId
A MongoDB ObjectId on täsmälleen 12 tavua pitkä, ja jokaisella osalla on tietty merkitys. Rakenteen ymmärtäminen auttaa selittämään, miksi ObjectId:t ovat yksilöllisiä ja ajassa järjestettyjä:
- 4-tavuinen aikaleima: Unix-epookista kuluneiden sekuntien määrä, joka tallentaa ObjectId:n luontiajankohdan. Tämä mahdollistaa ID:iden lajittelun ajan mukaan.
- 5-tavuinen satunnaisarvo: Kerran prosessia kohden luotu arvo, joka yhdistää koneen ja prosessin identiteetin, jotta eri asiakkaat tuottavat eri tunnisteet.
- 3-tavuinen inkrementtilaskuri: Laskuri, joka alkaa satunnaisesta arvosta ja kasvaa jokaisen uuden ObjectId:n myötä saman sekunnin aikana estäen törmäykset nopean lisäyksen aikana.
Yhdessä nämä kolme osaa takaavat, että jokainen ObjectId on yksilöllinen, vaikka useita dokumentteja lisättäisiin samaan aikaan eri palvelimille. Voit lukea upotetun luontiajan milloin tahansa kutsumalla ObjectId:n getTimestamp()-metodia.
ObjectId:n käytön edut ensisijaisena avaimena
Oletusarvoisen ObjectId:n käyttäminen _id-pääavaimena tarjoaa useita käytännön etuja, minkä vuoksi useimmat MongoDB kokoelmat ovat siitä riippuvaisia:
- Automaattinen generointi: Sinun ei tarvitse luoda tai hallita avainarvoja itse, mikä vähentää kaksoisavainten mahdollisuutta.
- Globaali ainutlaatuisuus: ObjectId:t pysyvät yksilöllisinä palvelimien välillä, joten ne toimivat hyvin hajautetuissa ja sirpaloiduissa käyttöönotoissa.
- Sisäänrakennettu aikaleima: Upotetun luontiajan avulla voit lajitella tai suodattaa asiakirjoja iän mukaan ilman ylimääräistä päivämääräkenttää.
- Korkea suorituskyky: Asiakaspuolen generointi välttää edestakaisen matkan palvelimelle, keeping lisää nopeasti.
Vaikka ObjectId sopii useimpiin sovelluksiin, voit silti valita mukautetun _id:n, kuten sähköpostiosoitteen tai tuotekoodin, kun luonnollinen yritysavain yksinkertaistaa kyselyitä. Oikea valinta riippuu siitä, miten aiot hakea ja yhdistää tietosi.


