Mongodb esmane võti: näide välja _id määramiseks ObjectId()

⚡ Nutikas kokkuvõte

MongoDB Primaarvõti on _id väli, mis identifitseerib unikaalselt iga dokumendi kogumis. Vaikimisi sisaldab see automaatselt genereeritud ObjectId, kuid dokumendi lisamisel saate _id väljale määrata ka oma väärtuse.

  • 🔑 Peamine võtmeroll: _id väli on peamine võti, mis identifitseerib iga dokumendi unikaalselt. MongoDB kogumise.
  • 🆔 Vaikimisi objekti ID: Kui _id välja jätta, MongoDB lisab dokumendile automaatselt unikaalse 12-baidise ObjectId väärtuse.
  • Ajaliselt järjestatud: ObjectId algab 4-baidise ajatempliga, seega on ID-d ligikaudu loomise aja järgi sortitavad.
  • ✍️ Kohandatud võtmed: Dokumendi lisamisel saate sisestada oma _id väärtuse, näiteks numbri või stringi.
  • 🔒 Muutumatu: Kui _id väärtus on määratud, ei saa seda muuta; muutmiseks peate selle kustutama ja uuesti sisestama.

Mis on esmane võti MongoDB?

In MongoDB, _id väli kogu primaarvõtmena, et iga dokumenti saaks kogus kordumatult tuvastada. Väli _id sisaldab ainulaadset ObjectID väärtust.

Vaikimisi dokumentide kogusse lisamisel, kui te ei lisa välja nime, mille nimes on _id, siis MongoDB lisab automaatselt välja Objekti ID, nagu allpool näidatud

Esmane võti MongoDB

Kui esitate päringu kogus olevate dokumentide kohta, näete iga kogus oleva dokumendi ObjectId-i.

Kui soovite seda tagada MongoDB ei loo kogu loomisel välja _id ja kui soovite määrata kogu _id-ks oma ID, peate selle kogu loomise ajal selgelt määratlema.

Id-välja selgesõnalise loomisel tuleb see luua nimega _id.

Vaatame näidet selle kohta, kuidas seda saavutada.

db.Employee.insert({_id:10, "EmployeeName" : "Smith"})

Code Selgitus:

  1. Eeldame, et loome kogus esimest dokumenti ja seetõttu määratleme ülaltoodud avalduses kogu loomise ajal selgesõnaliselt välja _id ja määrame sellele väärtuse.

Kui käsk on edukalt täidetud ja nüüd kasutate kogus olevate dokumentide kuvamiseks käsku find, kuvatakse järgmine väljund

Väljund:

Esmane võti MongoDB

Väljund näitab selgelt, et välja _id, mille me kogu loomise ajal määratlesime, kasutatakse nüüd kogu primaarvõtmena.

Mis on ObjectId? MongoDB?

Objekti ID on vaikimisi väärtuse tüüp, mis MongoDB määrab primaarvõtmele _id. See on 12-baidine identifikaator, mis on loodud olema globaalselt unikaalne serverites ja kollektsioonides, seega kaks dokumenti ei saa peaaegu kunagi sama väärtust. Kuna kliendidraiver saab genereerida ObjectId serverilt küsimata, MongoDB saab dokumente kiiresti sisestada ja seda saab kasutada paljudes masinates ilma keskse loendurita.

Iga ObjectId salvestatakse kompaktses binaarvormingus, kuid kuvatakse 24-tähemärgilise kuueteistkümnendsüsteemis stringina, näiteks ObjectId(„507f1f77bcf86cd799439011”). Esimesed baidid põhinevad praegusel kellaajal, mis tähendab, et väärtused suurenevad dokumentide loomisel pidevalt. See muudab ObjectId mitte ainult unikaalseks, vaid ka ligikaudselt sorteeritavaks sisestamise järjekorra järgi, mis on kasulik omadus, kui soovite esmalt kuvada uusimaid või vanimaid kirjeid.

Struktuur MongoDB ObjektiId

A MongoDB ObjectId on täpselt 12 baiti pikk ja igal osal on kindel tähendus. Struktuuri mõistmine aitab selgitada, miks ObjectId-d on unikaalsed ja ajaliselt järjestatud:

  • 4-baidine ajatempel: Unixi ajast möödunud sekundite arv, mis salvestab ObjectId loomise aja. See muudab ID-d aja järgi sorteeritavaks.
  • 5-baidine juhuslik väärtus: Väärtus, mis genereeritakse iga protsessi kohta üks kord, kombineerides masina ja protsessi identiteedi, nii et erinevad kliendid loovad erinevaid ID-sid.
  • 3-baidine suurendav loendur: Loendur, mis algab juhuslikust väärtusest ja suureneb iga uue ObjectId-ga samal sekundil, vältides kokkupõrkeid kiirete sisestamiste ajal.

Need kolm osa tagavad koos, et iga ObjectId on unikaalne isegi siis, kui mitu dokumenti lisatakse samal ajal erinevate serverite vahel. Saate manustatud faili loomise aega igal ajal lugeda, kutsudes ObjectId-le meetodit getTimestamp().

ObjectId kasutamise eelised primaarvõtmena

Vaikimisi ObjectId kasutamine _id primaarvõtmena pakub mitmeid praktilisi eeliseid, mistõttu enamik MongoDB kollektsioonid tuginevad sellele:

  • Automaatne genereerimine: Te ei pea võtmeväärtusi ise looma ega haldama, mis vähendab duplikaatvõtmete tekkimise võimalust.
  • Globaalne ainulaadsus: Objekti ID-d jäävad serverites unikaalseks, seega toimivad need hästi nii hajutatud kui ka killustatud juurutustes.
  • Sisseehitatud ajatempel: Manustatud loomise aeg võimaldab dokumente vanuse järgi sortida või filtreerida ilma täiendava kuupäevaväljata.
  • Suur jõudlus: Kliendipoolne genereerimine väldib edasi-tagasi reisi serverisse, keeping sisestab kiiresti.

Kuigi ObjectId sobib enamiku rakenduste jaoks, saate siiski valida kohandatud _id, näiteks e-posti aadressi või tootekoodi, kui loomulik ärivõti päringuid lihtsustab. Õige valik sõltub sellest, kuidas kavatsete oma andmeid otsida ja seostada.

KKK

Ei. _id väli on pärast dokumendi loomist muutmatu. Selle muutmiseks peate olemasoleva dokumendi kustutama ja lisama uue soovitud _id väärtusega.

Väli _id aktsepteerib enamikku BSON-tüüpe, sealhulgas ObjectId, täisarve, stringe ja isegi manustatud dokumente. Ainus reegel on see, et väärtus peab olema kollektsioonis unikaalne ja ei tohi olla massiiv.

Jah. MongoDB loob iga kollektsiooni jaoks automaatselt _id väljale unikaalse indeksi. Seda indeksit ei saa eemaldada ja see teeb primaarvõtme järgi otsinguid väga kiiresti.

Tehisintellekt oskab selgitada ObjectId ajatempli, genereerida koodi näitekstracloomise aeg funktsiooniga getTimestamp() ja objektide ID-de teisendamine stringideks, helping arendajad saavad dokumentide identifikaatoritest kiiremini aru ja teevad neist silumiskatseid.

Jah. Tehisintellekt oskab teie päringumustrite, unikaalsusvajaduste ja killustamisplaanide põhjal soovitada, kas säilitada vaikeväärtus ObjectId või kasutada kohandatud _id-d, näiteks e-posti aadressi või UUID-d.

Võta see postitus kokku järgmiselt: