MongoDB elemmatch mehrere Elemente in array

Ich habe eine mongodb-Dokument wie

    {
        "_id" : ObjectId("54e66b2da7b5f3a92e09dc6c"),
        "SomeMetric" : [ 
            {
                //some object
            }
            {
                //some object
            } 
         ],
        "FilterMetric" : [ 
            {
                "min" : "0.00",
                "max" : "16.83",
                "avg" : "0.00",
                "class" : "s1"
            }, 
            {
                "min" : "0.00",
                "max" : "16.83",
                "avg" : "0.00",
                "class" : "s2"
            }, 
            {
                "min" : "0.00",
                "max" : "16.83",
                "avg" : "0.00",
                "class" : "s1"
            }, 
            {
                "min" : "0.00",
                "max" : "16.83",
                "avg" : "0.00",
                "class" : "s2"
            } 
        ]
    }

In der Regel enthält es viele verschachtelte arrays wie dieses. Ich möchte project mit einer Metrik alleine, nur mit den arrays, die haben, die meinen Suchkriterien entsprechen.
Ich habe die Abfrage

db.sample.find(
{"filtermetric.class" : "s2"},{"filtermetric" : { $elemMatch : {class: "s2"}}}
)

Dieser gibt mir nur das erste Objekt im array. Das zweite Objekt mit der Klasse : s2 wird nicht zurückgegeben.

Wenn ich versuche

    db.sample.find(
   {"filtermetric" : { $elemMatch : {class: "s2"}}}
    )

Es mir alle 4 Objekte in dem array.

Wie bekomme ich alle Objekte, die match-Kriterien in so einem Fall?

InformationsquelleAutor Manoj | 2015-03-13
Schreibe einen Kommentar