MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo wyświetla błąd zduplikowanego klucza w polu _id_ w aplikacji Meteor

To nie rozwiąże twojego problemu, ale powinno wskazać ci właściwy kierunek i być może umożliwić ci wyizolowanie problemu, którego możesz użyć do stworzenia nowego pytania:

Nie ma. Jest tylko jeden indeks, który ma nazwę i deskryptor klucza. To nie to samo. Nazwa domyślnego indeksu to _id_ , jego klucz to _id .

_id jest zwykle tworzony po stronie klienta, a nie po stronie serwera. Pytanie brzmi, skąd pochodzą te klucze, ponieważ 2ZGvRfuD8iMvRiXJd z pewnością nie jest ObjectId . Może to być klucz meteorytu lub używasz jakiegoś niestandardowego klucza podstawowego, ale nie wiem, jak te klucze są generowane. Może to, co generuje klucz, jest podatne na kolizje?

Więcej informacji na ten temat byłoby pomocnych, ale sugeruję sformułowanie nowego pytania, aby pytanie nie rozrosło się zbytnio ani nie miało długiej historii.

To jest lemat pierwszej odpowiedzi:nie można usunąć obowiązkowego indeksu klucza podstawowego.

Edycja:

Meteor domyślnie generuje identyfikatory w inny sposób niż MongoDb . Ma to sens, ponieważ konwencja dla ObjectId uprawdopodobnia kolizje, jeśli liczba klientów jest duża (tj. jeśli klienci nie są instancjami serwera, ale przeglądarkami klienckimi, których jest prawdopodobnie 2-3 rzędy wielkości więcej).

Zamiast tego Meteor najwyraźniej używa metody do konsekwentnego generowania liczb pseudolosowych na kliencie i serwerze . Co irytujące, implementacja wykorzystuje PRNG i powraca do nie krypto-silny deterministyczny generator liczb losowych (Alea) . Innymi słowy, dowiedz się, jak dokładnie Twoje identyfikatory są generowane może być trudne, ponieważ zależy to od wielu szczegółów Twojego środowiska.

Obejście:Spróbuj użyć ObjectId jako klucz podstawowy:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Znajdź przy użyciu _id nie działa z agregacją

  2. Mongoose:atomowa FindOne-Or-Insert(), nie aktualizuj istniejącej instancji, jeśli zostanie znaleziona

  3. najlepsze praktyki łączenia django + PyMongo?

  4. jak zignorować duplikaty dokumentów podczas korzystania z insertMany w bibliotece php mongodb?

  5. Mongoose tablica schematów obiektów