sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo giver duplikatnøglefejl på _id_-feltet i Meteor-applikationen

Dette løser ikke dit problem, men det burde pege dig i den rigtige retning og måske gøre dig i stand til at isolere problemet, som du kan bruge til at oprette et nyt spørgsmål:

Det er der ikke. Der er kun ét indeks, og det har et navn og en nøglebeskrivelse. Det er ikke det samme. navnet af standardindekset er _id_ , dens nøgle er _id .

_id er normalt oprettet på klientsiden, ikke på serversiden. Spørgsmålet er, hvor disse nøgler kommer fra, fordi 2ZGvRfuD8iMvRiXJd er bestemt ikke et ObjectId . Dette kan være en meteornøgle, eller du bruger en brugerdefineret primærnøgle, men jeg ved ikke, hvordan disse nøgler genereres. Måske er det, der genererer nøglen, modtageligt for kollisioner?

Mere information om det ville være nyttigt, men jeg vil foreslå, at du formulerer et nyt spørgsmål, så spørgsmålet ikke bliver for stort eller får en masse historie.

Det er et lemma for det første svar:Du kan ikke slette det obligatoriske primærnøgleindeks.

Rediger:

Meteor, som standard, genererer id'er på en anden måde end MongoDb . Det giver mening, fordi konventionen for ObjectId gør kollisioner sandsynlige, hvis antallet af klienter er stort (dvs. hvis klienterne ikke er serverforekomster, men klientbrowsere, hvoraf der sandsynligvis er 2-3 størrelsesordener mere).

I stedet bruger Meteor tilsyneladende metoden til konsekvent at generere pseudo-tilfældige tal på klient og server . Irriterende nok bruger implementeringen en PRNG og falder tilbage til en ikke krypto-stærk deterministisk tilfældig talgenerator (Alea) . Med andre ord, at finde ud af hvordan præcis dine id'er bliver genereret kan være vanskelige, fordi det afhænger af mange detaljer i dit miljø.

Løsning:Prøv at bruge ObjectId som en primær nøgle:

Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});


  1. Hent data fra 2 samlinger i mongodb i en enkelt forespørgsel

  2. MongoDB SSPL-licensændringsopdatering

  3. Læsning, skrivning og lagring af JSON med Node på Heroku

  4. Forespørgsel efter en liste indeholdt i en anden liste i mongodb