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

MongoDB Project Array Dokumentstørrelse med Condition

Du skal mindst have MongoDB v3.4.4

Projicering af "array.a": 1 returnerer ["A", "A", "A"] .Siden din array felt er et array, skal vi bruge $map operatør til iteration.

For at iterere over objektnøgler skal vi transformere det til array med $objectToArray operatør.

"c": { "c": [ "x": true, {k: "x", v: true}, "y": true, -> {k: "y", v: true}, "z": false {k: "z", v: false}, } ]

Derefter anvender vi $filter operatør for kun at få k:v par, hvis v er true .

db.collection.aggregate([
  {
    $match: {}
  },
  {
    $project: {
      array: {
        $map: {
          input: "$array",
          as: "arr",
          in: {
            a: "$$arr.a",
            b: "$$arr.b",
            c: {
              $size: {
                $filter: {
                  input: {
                    $objectToArray: {
                      $ifNull: [
                        "$$arr.c",
                        {}
                      ]
                    }
                  },
                  cond: {
                    $eq: [
                      "$$this.v",
                      true
                    ]
                  }
                }
              }
            }
          }
        }
      }
    }
  }
])
 

MongoPlayground




  1. Timeout venter på en MongoConnection

  2. Opdatering af ordbog i Mongodb

  3. Find alle objekter i samlingen Java Mongodb

  4. Hvad gør jeg galt med $set og $inc i opdatering