MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo дава грешка с дублиран ключ в полето _id_ в приложението Meteor

Това няма да реши проблема ви, но трябва да ви насочи в правилната посока и може би ще ви позволи да изолирате проблема, който можете да използвате, за да създадете нов въпрос:

Няма. Има само един индекс и той има име и ключов дескриптор. Това не е едно и също нещо. Име на индекса по подразбиране е _id_ , неговият ключ е _id .

_id обикновено се създава от страна на клиента, а не от страна на сървъра. Въпросът е откъде идват тези ключове, защото 2ZGvRfuD8iMvRiXJd със сигурност не е ObjectId . Това може да е метеорен ключ или да използвате някакъв персонализиран първичен ключ, но не знам как се генерират тези ключове. Може би всичко, което генерира ключа, е податливо на сблъсъци?

Повече информация за това би била полезна, но предлагам да формулирате нов въпрос, така че въпросът да не стане твърде голям или да има много история.

Това е лема от първия отговор:Не можете да изтриете задължителния индекс на първичен ключ.

Редактиране:

Meteor, по подразбиране, генерира идентификатори по различен начин от MongoDb . Това има смисъл, защото конвенцията за ObjectId прави сблъсъци вероятни, ако броят на клиентите е голям (т.е. ако клиентите не са сървърни инстанции, а клиентски браузъри, от които вероятно има 2-3 порядъка повече).

Вместо това, Meteor очевидно използва метод за последователно генериране на псевдослучайни числа на клиент и сървър . Дразнещо, внедряването използва PRNG и се връща към не крипто-силен детерминистичен генератор на случайни числа (Alea) . С други думи, да разберете как точно генерирането на вашите идентификатори може да е трудно, защото зависи от много детайли на вашата среда.

Заобиколно решение:Опитайте да използвате ObjectId като първичен ключ:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изпълним собствена заявка на MongoDB (JSON) само с помощта на mongo-java-driver?

  2. Как да получите пагинирани/нарязани данни на масив от поддокументи в колекция mongo?

  3. MEAN Stack:Как да актуализирам резултата от функция в базата данни?

  4. Атрибут BsonElement и персонализирана логика за десериализация с MongoDB C# драйвер

  5. 5 начина да получите милисекунди от дата в MongoDB