2010-06-10 18 views
22

Ben bir Öğe belgesi var dediğimde: fiyatı ve: adet alanları. Bazen belirli bir ürünle eşleşen tüm belgeleri bulmak istiyorum: fiyat VE: qty, ve diğer zamanlarda ya fiyatı: ya kendi başına ya da: kendi başına. Fiyat ve: adet anahtarlarını, ama aynı zamanda birlikte hem bir bileşik endeksi oluşturmak için gereken ya da tek tuş endeksleri yeterli yapmakMongoDB birden tuşlarını indeksine

Zaten endeksli var?

Düzenleme: o zaman bir bileşik endeksi çalışmaz kendi başına qty:

http://www.mongodb.org/display/DOCS/Indexing+Advice+and+FAQ

+0

evet, ben diğer ppl ne düşündüğünü bilmek isteriz. Birden çok "alan" a karşı arayabileceğim bir koleksiyonum var. Açıkçası _id endeksli ama bende başkaları da var. Fiyat ve: Şu anda tek dizinlere sahip – luckytaxi

cevap

41

price üzerine bir indeks price sorgulamaları ile yardımcı olur. qty'daki bir dizin, qty numaralı sorguda yardımcı olur. price ve qty üzerine bir indeks price ve qty üzerinde price sorgulamaları VE sorgu ile yardımcı olur. Yani, birinin fiyatı için iki endeks almak gibi. Yine de, qty sorgusunda yardımcı olmayacaktır.

Sen sahip endeksler sayısını en aza indirmek, böylece tek tuşlu endeksler birini bırakıp bu anahtarla başlayan bir bileşik endeksi oluşturmalıdır. Eğer x, y ve z bir sorguyu yapıyoruz Genel bir kural olarak

, sen {x:1, y:1, z:1} gibi bir dizin olmalıdır. Bu indeks aşağıdaki sorguları hızlı hale getirecek:

db.foo.find({x : ..., y : ..., z : ...}) 
db.foo.find({x : ..., y : ...}) 
db.foo.find({x : ...}) 

Bu sorgular hızlı yapmayacağız:

db.foo.find({y : ..., z : ...}) 
db.foo.find({y : ...}) 

Yani, sorgu da içinde bir dizinin başlangıç ​​anahtarı (ler) sahip olduğundan emin olun.

+5

Bu 1.6+ beri şimdi Mongo bir bileşik dizinden herhangi bir tuşa kullanabilirsiniz değişti açıkça ima etti. –

+2

@Zsolt: – kristina

+0

gerçekten, bunu eklemeyi unuttum. –

-5

Eğer gerekirse: fiyatı kendi başına ya da ben bu çok yararlı mongodb sitesinde makale buldum.

+0

, ben de hem çalışan sorgu için bir bileşik endeksi gerekiyorsa bilmek istiyorum doğru değil qty – Evan

+3

. Bileşik endeksi: fiyat +: qty yardımcı olacaktır: fiyat kendi başına beri: fiyat bileşik endeksinde ilk sıradadır. ama sadece birçok durumda doğrudur: http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes –