MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongo memberikan kesalahan kunci duplikat pada bidang _id_ di aplikasi Meteor

Ini tidak akan menyelesaikan masalah Anda, tetapi seharusnya mengarahkan Anda ke arah yang benar dan mungkin memungkinkan Anda untuk mengisolasi masalah yang dapat Anda gunakan untuk membuat pertanyaan baru:

Tidak ada. Hanya ada satu indeks, dan memiliki nama dan deskriptor kunci. Itu bukan hal yang sama. nama dari indeks default adalah _id_ , kuncinya adalah _id .

_id biasanya dibuat sisi klien, bukan sisi server. Pertanyaannya adalah dari mana kunci-kunci itu berasal, karena 2ZGvRfuD8iMvRiXJd tentu saja bukan ObjectId . Ini mungkin kunci meteor, atau Anda menggunakan beberapa kunci utama khusus, tetapi saya tidak tahu bagaimana kunci ini dibuat. Mungkin apa pun yang menghasilkan kunci rentan terhadap tabrakan?

Info lebih lanjut tentang itu akan sangat membantu, tetapi saya sarankan untuk menyusun pertanyaan baru agar pertanyaannya tidak berkembang terlalu besar atau mendapatkan banyak riwayat.

Itulah lemma dari jawaban pertama:Anda tidak dapat menghapus indeks kunci utama wajib.

Sunting:

Meteor, secara default, menghasilkan id dengan cara yang berbeda dari MongoDb . Itu masuk akal, karena konvensi untuk ObjectId membuat tabrakan mungkin terjadi jika jumlah klien banyak (yaitu jika klien bukan instans server, tetapi browser klien, yang mungkin ada 2-3 kali lipat lebih banyak).

Sebaliknya, Meteor tampaknya menggunakan metode untuk secara konsisten menghasilkan angka pseudo-acak pada klien dan server . Yang menjengkelkan, implementasinya menggunakan PRNG dan kembali ke not generator angka acak deterministik kuat kripto (Alea) . Dengan kata lain, mencari tahu bagaimana tepatnya ID yang Anda buat bisa jadi rumit karena bergantung pada banyak detail lingkungan Anda.

Solusi:Coba gunakan ObjectId sebagai kunci utama:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Periksa jumlah koneksi saat ini ke MongoDb

  2. Laravel 4:Kelas 'MongoClient' Tidak Ditemukan

  3. Mengapa saya tidak bisa menjalankan penjelasan pada pembaruan MongoDB?

  4. mongodb beberapa dokumen masukkan atau perbarui dengan kunci unik

  5. Skema MongoDB untuk menyimpan riwayat lokasi pengguna