sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo ger dubblettnyckelfel på _id_-fältet i Meteor-applikationen

Detta kommer inte att lösa ditt problem, men det borde peka dig i rätt riktning och kanske göra det möjligt för dig att isolera problemet som du kan använda för att skapa en ny fråga:

Det finns det inte. Det finns bara ett index, och det har ett namn och en nyckelbeskrivning. Det är inte samma sak. namnet för standardindexet är _id_ , dess nyckel är _id .

_id skapas normalt på klientsidan, inte på serversidan. Frågan är var dessa nycklar kommer ifrån, eftersom 2ZGvRfuD8iMvRiXJd är verkligen inte ett ObjectId . Det här kan vara en meteornyckel, eller så använder du någon anpassad primärnyckel, men jag vet inte hur dessa nycklar genereras. Kanske är det som genererar nyckeln mottagligt för kollisioner?

Mer information om det skulle vara till hjälp, men jag skulle föreslå att du formulerar en ny fråga så att frågan inte blir för stor eller får mycket historia.

Det är ett lemma för det första svaret:Du kan inte ta bort det obligatoriska primärnyckelindexet.

Redigera:

Meteor, som standard, genererar ID på ett annat sätt än MongoDb . Det är vettigt eftersom konventionen för ObjectId gör kollisioner sannolika om antalet klienter är stort (dvs om klienterna inte är serverinstanser, utan klientwebbläsare, av vilka det förmodligen finns 2-3 storleksordningar mer).

Istället använder Meteor tydligen metod för att konsekvent generera pseudo-slumpmässiga tal på klient och server . Irriterande nog använder implementeringen en PRNG och faller tillbaka till en inte kryptostark deterministisk slumptalsgenerator (Alea) . Med andra ord, ta reda på hur exakt dina id genereras kan vara knepigt eftersom det beror på många detaljer i din miljö.

Lösning:Försök att använda ObjectId som primärnyckel:

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


  1. Hur kan jag köra MongoDB-kommandon genom att fråga den speciella $cmd-samlingen?

  2. Databasstorleken på disken ökar när en multipel av CSV-filen jag mongoimporterar?

  3. Mongo bulk hitta och uppdatera matchade dokumentfält i en enda fråga?

  4. Skillnaden mellan att dekorera en fastighet i C# med BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId