2017-01-18 75 views
6

Ben şöyle mongodb şey veriler var. Kedilerden oluşan bir koleksiyon var. Kediler farklı kategorilere ayrılır ve 1 ile 100 arasında sıralanır. Bir kedi 2 veya daha fazla kategoride bulunabilir. 1000'lerce kategori var.nedir çok boyutlu bir dizi ensureIndex endeksi mongodb alanına uygun yolu?

TOPLAMA: "kediler"

TUŞLARI:

rank.category1 = 1; // ranked 1st in category #1 
rank.category2 = 13; // ranked 13th in category #2 
rank.category425 = 50; // ranked 50th in category #425 

SORU: Bir tek şey "kediler" dönmek için bulunan bir şeyi() yapmak istiyorsanız " rank.category2 '$ => var 'Kategori2 "nde' rank' Bu indeks uygun yolu nedir? Ben sadece "rütbe" koleksiyonu basit artan endeks koyabilir miyim yoksa tüm 1000+ kategori * tuşları üzerinde bir dizin gerekiyor? Bu bilgiyi saklamak için daha iyi bir yol var mı, yoksa daha kolay endeksleme mi? yaklaşık

cevap

7

Nasıl ... Şunları yapabilirsiniz endeksi db.collection.ensureIndex({"categories":1})

rank.categories = [1, 2, 425]; 
rank.category = { 
    1 : 1, 
    2 : 13, 
    425 : 50 
} 

. Artık kategoriler arasında arama yapabilir ve bir tane bulduğunuzda her birinin sıralamasını alabilirsiniz.

+0

Evet, bence bunu yapmanın tek yolu bu olabilir. Dizi anahtarlarını dizine benzemiyor gibi görünmüyor ... sadece dizi değerleri. Sorgu, tek bir kategori kimliğini içeren koleksiyondaki tüm kedilere dönmek nasıl görünüyor? –

+0

Onu buldum. Onun ile kolay bir bulmak() ... {kategoriler: 435} –