sql >> Databasteknik >  >> NoSQL >> MongoDB

Räkna en underdokumentegenskap i en projektion med MongoDB och Javascript

  • $map för att upprepa loop av subRoom array och in för att returnera obligatoriska fält
  • $filter för att upprepa loop av notifications och $size för att få totalt antal element från filtrerade resultat
db.collection.find({ id: 1 },
{
  _id: 0,
  room: 1,
  notRead: {
    $size: {
      $filter: {
        input: "$notifications",
        cond: {
          $not: { $in: ["User1", "$$this.read"] }
        }
      }
    }
  },
  "subRoom": {
    $map: {
      input: "$subRoom",
      in: {
        id: "$$this.id",
        notRead: {
          $size: {
            $filter: {
              input: "$$this.notifications",
              cond: { $not: { $in: ["User1", "$$this.read"] } }
            }
          }
        }
      }
    }
  }
})

Lekplats




  1. MongoDB-listor - få varje N:te objekt

  2. Segelsjs. Bästa sättet att skapa (och hantera) index på sails-mongo (mongodb)

  3. Vad är skillnaden mellan Spring Datas MongoTemplate och MongoRepository?

  4. Spara referensfält mongoengine