MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB projiziert die Dokumente mit einer Anzahl größer als 2

Sie müssen die anderen Felder und Ihren $match Die Pipeline muss nur eine Abfrage für das neu erstellte Feld durchführen, um die Dokumente basierend auf der Arraygröße zu filtern. So etwas wie das Folgende sollte funktionieren:

db.entity.aggregate([
    {
        "$project": {
            "Line": 1,
            "LineStart": 1, "SSCEXPEND": 1,
            "SSCEXPEND_count": { "$size": "$SSCEXPEND" }
         }
    },
    {
        "$match": {
            "SSCEXPEND_count": { "$gte": 2 }
         }
    }
])

Beispielausgabe :

/* 0 */
{
    "result" : [ 
        {
            "_id" : "201503110040020021",
            "Line" : "1",
            "LineStart" : ISODate("2015-03-11T06:49:35.000Z"),
            "SSCEXPEND" : [ 
                {
                    "Secuence" : 10,
                    "Title" : 1
                }, 
                {
                    "Secuence" : 183,
                    "Title" : 613
                }
            ],
            "SSCEXPEND_count" : 2
        }
    ],
    "ok" : 1
}