Membuat Indeks Multifield di Mongoose / MongoDB


93

Saya mencoba mencari dokumentasi, tetapi tidak berhasil, tentang cara membuat indeks multi-bidang di Mongoosejs. Secara khusus saya memiliki dua bidang yang perlu diindeks dan unik. Apa contoh skema luwak yang mengindeks dua bidang bersama-sama?

Jawaban:


198

Anda memanggil indexmetode pada Schemaobjek Anda untuk melakukan itu seperti yang ditunjukkan di sini . Untuk kasus Anda, ini akan menjadi seperti:

mySchema.index({field1: 1, field2: 1}, {unique: true});

2
Ini disebut Indeks Hitung di mongodb. Jadi itu membuat indeks sebagai bidang1 dan bidang1 + bidang2. Jadi ini adalah indeks pertama menurut bidang1 dan kemudian di dalam bidang1 sehubungan dengan bidang 2
Ketan Ghumatkar

1
apa arti dari 1 setelah field1: dan field2:?
Damon Yuan

9
@DamonYuan Mereka mengatur urutan kolom dalam indeks. 1sedang naik, -1akan turun.
JohnnyHK

1
@KetanGumatkar Ini didasarkan pada urutan bidang yang terdaftar di objek di panggilan ke index.
JohnnyHK

2
1dan -1 menentukan kunci indeks naik atau turun di bidang indeks. Saya menemukan dokumen http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha


0

Omong-omong, jawaban yang diterima salah, sesuai https://stackoverflow.com/a/52553550/129300 Anda harus membungkus nama bidang dalam tanda kutip tunggal, yaitu:

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

Hari bahagia!


Kunci objek di JS dapat dihapus tanda kutipnya selama itu adalah pengenal yang valid secara sintaksis. field1dan field2merupakan pengenal yang valid. field1.footidak, misalnya.
Gus

-3
    Following command can be used to create compound index for nested json:
    db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1}) 
Mongo json structure is like :
{"_id":"648738"
 "account": { 
    "id": "123",
    "customerId": 7879,
    "name": "test"
   ..
   ..

  }
}

Saya telah menguji dengan data sampel itu berfungsi sempurna seperti yang diharapkan.


Kami tidak ingin bahwa dengan shell mongooses kami ingin itu dengan skema js node
Rohit Nishad
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.