Това няма да реши проблема ви, но трябва да ви насочи в правилната посока и може би ще ви позволи да изолирате проблема, който можете да използвате, за да създадете нов въпрос:
Няма. Има само един индекс и той има име и ключов дескриптор. Това не е едно и също нещо. Име на индекса по подразбиране е _id_
, неговият ключ е _id
.
_id
обикновено се създава от страна на клиента, а не от страна на сървъра. Въпросът е откъде идват тези ключове, защото 2ZGvRfuD8iMvRiXJd
със сигурност не е ObjectId
. Това може да е метеорен ключ или да използвате някакъв персонализиран първичен ключ, но не знам как се генерират тези ключове. Може би всичко, което генерира ключа, е податливо на сблъсъци?
Повече информация за това би била полезна, но предлагам да формулирате нов въпрос, така че въпросът да не стане твърде голям или да има много история.
Това е лема от първия отговор:Не можете да изтриете задължителния индекс на първичен ключ.
Редактиране:
Meteor, по подразбиране, генерира идентификатори по различен начин от MongoDb
. Това има смисъл, защото конвенцията за ObjectId
прави сблъсъци вероятни, ако броят на клиентите е голям
(т.е. ако клиентите не са сървърни инстанции, а клиентски браузъри, от които вероятно има 2-3 порядъка повече).
Вместо това, Meteor очевидно използва метод за последователно генериране на псевдослучайни числа на клиент и сървър . Дразнещо, внедряването използва PRNG и се връща към не крипто-силен детерминистичен генератор на случайни числа (Alea) . С други думи, да разберете как точно генерирането на вашите идентификатори може да е трудно, защото зависи от много детайли на вашата среда.
Заобиколно решение:Опитайте да използвате ObjectId
като първичен ключ:
Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});