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

Tæl array-elementer, der matcher betingelsen

Du skal bruge $filter aggregering for at bortfiltrere den external oprindelse og internal oprindelse sammen med $size aggregering for at beregne længden af ​​arrays.

Sådan noget her

db.collection.aggregate([
  { "$addFields": {
    "internalUsersCount": {
      "$size": {
        "$filter": {
          "input": "$participants",
          "as": "part",
          "cond": { "$eq": ["$$part.origin", "internal"]}
        }
      }
    },
    "externalUsersCount": {
      "$size": {
        "$filter": {
          "input": "$participants",
          "as": "part",
          "cond": { "$eq": ["$$part.origin", "external"] }
        }
      }
    }
  }}
])

Output

[
  {
    "conferenceName": "myFirstConference",
    "endDate": 1535722420,
    "externalUsersCount": 1,
    "internalUsersCount": 1,
    "startDate": 1535722327
  }
]



  1. $in kræver et array som et andet argument, fundet:mangler

  2. Hvorfor tilføjer Mongoose tomme arrays?

  3. WebSocket-forbindelse til <URL> mislykkedes:Fejl under WebSocket-håndtryk:Uventet svarkode:521

  4. Hvordan gemmer man kun én database i Redis?