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'});