MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Размер на документа за масив на MongoDB с условие

Трябва да имате поне MongoDB v3.4.4

Проектиране на "array.a": 1 ще върне ["A", "A", "A"] .Тъй като вашият array е масив, трябва да използваме $map оператор за итерация.

За да повторим ключовете на обекта, трябва да го трансформираме в масив с $objectToArray оператор.

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

След това прилагаме $filter оператор, за да получите само k:v двойки, чиито v е 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Express JS Показване на данни по ID

  2. Метеор:публикувайте 2 различни проекции на елементи от масива

  3. използва за времето за създаване на mongodb ObjectId

  4. Индексът вече съществува с грешка при различни опции при използване на createIndex() в най-новия java драйвер на MongoDB

  5. Когато се опитвам да използвам Hibernate ogm и пролетно зареждане, конзолата дава Не може да се създаде грешка в класа на имената стратегия