sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB projicerar dokumenten med ett antal större än 2

Du måste projicera de andra fälten och din $match pipeline behöver bara göra en fråga på det nyskapade fältet för att filtrera dokumenten baserat på arraystorleken. Något i stil med följande borde fungera:

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

Exempelutdata :

/* 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
}


  1. Det finns ett sätt att upprätthålla referensintegritet i MongoDB

  2. Hämta objektlistan genom att kontrollera flera attributvärden i MongoDB i golang

  3. MongoDB Stitch returnerar data som $NumberDouble istället för själva numret

  4. Tidskomplexitet för zadd när värde har högre poäng än högsta poäng som finns i den riktade sorterade uppsättningen