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

Indeks jarang unik Mongodb

Saya juga baru saja mengalami masalah ini. Saya ingin nilai menjadi nol atau unik. Jadi, saya mengatur keduanya unique dan sparse bendera:

var UserSchema = new Schema({
  // ...
  email: {type: String, default: null, trim: true, unique: true, sparse: true},
  // ...
});

Dan, saya memastikan bahwa database telah benar-benar membuat indeks dengan benar dengan db.users.getIndexes();

{
  "v" : 1,
  "key" : {
    "email" : 1
  },
  "unique" : true,
  "ns" : "test.users",
  "name" : "email_1",
  "sparse" : true,
  "background" : true,
  "safe" : null
},

(Jadi, ini bukan sama dengan masalah di sini:kesalahan kunci duplikat bidang mongo _id )

Kesalahan saya adalah mengatur default nilai menjadi null . Dalam beberapa hal, Mongoose menghitung null explicit eksplisit sebagai nilai yang harus unik. Jika bidang tidak pernah ditentukan (atau undefined ) maka tidak dipaksa untuk menjadi unik.

email: {type: String, trim: true, unique: true, sparse: true},

Jadi, jika Anda juga mengalami masalah ini, pastikan Anda tidak menyetel nilai default, dan pastikan Anda tidak menyetel nilai ke null di tempat lain dalam kode Anda. Sebaliknya, jika Anda perlu menyetelnya secara eksplisit, setel ke undefined (atau nilai unik).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. penyisipan mongodb gagal karena pengecualian soket

  2. Bagaimana Parameter arrayFilters Bekerja di MongoDB

  3. Bahaya Membangun Indeks di MongoDB

  4. Gambaran Umum Pelaporan Operasional Basis Data di ClusterControl

  5. Bagaimana cara melakukan pagination menggunakan kueri rentang di MongoDB?