2012-10-16 28 views
5

ikinci koşul eşleşen Bir dizideki eleman almakMongoDB gelişmiş sorgusu:</p> <p>elemanlar:: Aşağıdaki yapıya sahip unsurların bir koleksiyona sahip

{ 
id : 123, 
items : [ { color: "blue", "groups" : [3, 5] }, { color: "red", "groups" : [6, 8] } ] 
} 

{ 
id : 124, 
items : [ { color: "blue", "groups" : [1, 2] }, { color: "green", "groups" : [5, 9] } ] 
} 

Biz Öğeleri almak için etkili bir yol istiyorum 5, 9, 27, 123 veya 56 gruplarına erişilebilir mavi renkte bir öğeye sahip. Bu, öğenin her iki koşulu da karşılaması gerektiğinden, id 123 ile öğeye değil, ID 124 öğesiyle öğeye dönmelidir. Sorgunun olabildiğince verimli olmasını istiyoruz.

Bu sorgu etkilidir ancak ihtiyacını karşılamak değildir:

{$and : { "items.groups" : { $in : [5, 9, 27, 123, 56] }, "items.color" : "blue" }} 

o "mavi" ve grup 9.

+0

[: tek bir dizi öğenin birden çok özelliklerini eşleştirmek istiyor çünkü $elemMatch kullanmak gerekir doktora git] (http://docs.mongodb.org/manual/tutorial/query-documents/). Yeni başlayanlar arasında, tüm örnekleri (http://docs.mongodb.org/manual/tutorial/query-documents/) görebilmeyi faydalı buldum, belki başkası yapacak. –

cevap

7

You eşleşen başka biriyle eşleşen bir öğe vardır çünkü id = 124 maç olacak şekilde mon I $ elemMatch` belirtilen `bulundu

db.test.find({ items: { $elemMatch: { 
    color: "blue", 
    groups: { $in: [5, 9, 27, 123, 56] } 
}}}); 
İlgili konular