2012-03-22 16 views
11

question cevabında $ elemMatch kullanarak dizi değerlerini aramak için ilginç bir çözüm buldum.

bizim koleksiyonunda aşağıdaki belgeleri varsa:

{ 
    foo : [ { bar : "xy", baz : 1 }, 
      { bar : "a", baz : 10 } ] 
}, 
{ 
    foo : [ { bar : "xy", baz : 5 }, 
      { bar : "b", baz : 50 } ] 
} 

aşağıdaki sorgu yalnızca ilk belgeyi eşleşir:

db.test.find({ 
    foo : { "$all" : [ { "$elemMatch" : { bar : "xy", baz : 1} }, { "$elemMatch" : { bar : "a", baz : 10 } } ] } 
}); 

Ben birkaç diğer örneklerle denedim ve gerçekten çalışıyor. Ancak $all operatörünün resmi belgeleri bu iki soruyu birleştirmekle ilgili bir şey söylemez.

Bu amaçlanan davranış veya hata mı? Ya da bu belgelerin bu kullanım durumunu kapsamadığı bir sorun mu?

cevap

5

Amaçlanan davranış budur. Dokümantasyon bu kullanım durumunu kapsamaz ve daha iyi hale getirmek için üzerinde çalışıyoruz. Bununla birlikte, her olası sorgu kombinasyonunu belgelemek zor.

+2

Bilgi için teşekkürler. Her birleşimi belgelemenin zor olduğunu anlıyorum, ancak bazı operatörlerin birleştirilebileceğini bilmek çok yararlı olacaktır. –

+0

Henüz bunu yapmanın bir yolu var mı? –

İlgili konular