Mongoose / MongoDB'de Çok Alanlı Dizinler Oluşturma


93

Mongoosejs'de çok alanlı indekslerin nasıl oluşturulacağına dair boşuna bir belge bulmaya çalışıyorum. Özellikle endekslenmesi ve benzersiz olması gereken iki alanım var. İki alanı birlikte indeksleyen örnek bir firavun faresi şeması nedir?

Yanıtlar:


198

Burada gösterildiği gibi bunu yapmak indexiçin Schemanesnenizdeki yöntemi çağırırsınız . Durumunuz için şöyle bir şey olacaktır:

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

2
Buna mongodb'de Compount Endeksi denir. Böylece alan1 ve alan1 + alan2 olarak dizinler oluşturur. Yani,
alan1'e

1
alan1: ve alan2'den sonra 1'in anlamı nedir?
Damon Yuan

9
@DamonYuan Endeksteki alanların sıralama düzenini ayarlarlar. 1yükseliyor, -1azalıyor olacaktır.
JohnnyHK

1
@KetanGhumatkar Alanların çağrıda nesnede listelendiği sıraya bağlıdır index.
JohnnyHK

2
1ve -1 dizin alanında artan veya azalan bir dizin anahtarı belirtir. Dokümanları buldum http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha


0

Bu arada, kabul edilen cevap yanlış, https://stackoverflow.com/a/52553550/129300 uyarınca alan adlarını tek tırnak içine almanız gerekir, yani:

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

Mutlu gün!


JS'deki nesne anahtarları, sözdizimsel olarak geçerli tanımlayıcılar oldukları sürece alıntıdan çıkarılabilir. field1ve field2geçerli tanımlayıcılardır. field1.fooörneğin değil.
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"
   ..
   ..

  }
}

Örnek verilerle test ettim, beklendiği gibi mükemmel çalışıyor.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.