sql >> Database teknologi >  >> NoSQL >> MongoDB

Grupper og tæl med tilstand

Det du har brug for er $cond operatør af aggregeringsramme. En måde at få det, du ønsker, er:

db.foo.aggregate([
    {
        $project: {
            item: 1,
            lessThan10: {  // Set to 1 if value < 10
                $cond: [ { $lt: ["$value", 10 ] }, 1, 0]
            },
            moreThan10: {  // Set to 1 if value > 10
                $cond: [ { $gt: [ "$value", 10 ] }, 1, 0]
            }
        }
    },
    {
        $group: {
            _id: "$item",
            countSmaller: { $sum: "$lessThan10" },
            countBigger: { $sum: "$moreThan10" }
        }
    }
])
 

Bemærk: Jeg har antaget value til numerisk i stedet for streng.

Output:

{ "result" : [ { "_id" : "xyz1", "countSmaller" : 1, "countBigger" : 0 }, { "_id" : "abc1", "countSmaller" : 2, "countBigger" : 2 } ], "ok" : 1 }

  1. Redis adfærd med flere samtidige programmer, der læser/del på den samme hash-nøgle

  2. Hvordan kan jeg bruge Python til at transformere MongoDB's bsondump til JSON?

  3. Tidskompleksitet af zadd, når værdien har en score højere end den højeste score til stede i det målrettede sorterede sæt

  4. Redis som meddelelsesmægler