2016-10-29 1 views
0

Ich versuche, nicht nur die Felder, sondern Objekte in meinem Array-Feld zu filtern. Unter Bezugnahme auf das Beispiel unten für Segmente Feld, möchte ich meine Klienten nur die Objekte in den Segmente Array zu erhalten, wo isReleased === trueWie filtere ich Unterdokument (Array) basierend auf einigen Prädikat in Meteor Veröffentlichung?

Beispiel Schema

{ 
    _id:  123456, 
    segments: [ 
     { 
      name: 'Type A', 
      isReleased: false, 
     }, 
     { 
      name: 'Type B', 
      isReleased: false, 
     }, 
     { 
      name: 'Type C', 
      isReleased: true, 
     } 
    ], 
} 

Also im Grunde, ich mein Kunde möchte nur erhalten ,

{ 
    _id:  123456, 
    segments: [ 
     { 
      name: 'Type C', 
      isReleased: true, 
     } 
    ], 
} 
+0

Mögliches Duplikat von [Nur das abgefragte Element in einem Objekt-Array der MongoDB-Sammlung abrufen] (http://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an- object- array -in-mongodb-Sammlung) –

Antwort

0

Sie könnten den Operator $elemMatch verwenden. Die Abfrage würde wie folgt sein:

Schema.find({segments: {$elemMatch: {isReleased: true}}},...) 

Sie die Beispiele für weitere Details über den Link überprüfen können.

Verwandte Themen