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

Vis den betingede størrelse af et array med de andre felter i et mongodb-dokument

Jeg fandt ud af, hvordan man får det til at fungere. Tak @joe for at foreslå at bruge filter, dette var virkelig løsningen.

Her er hele forespørgslen:

db.fridges.aggregate([
  {
    $match: {
      $and: [
        {
          "brand": {
            $in: [
              "Bosch",
              "Samsung"
            ]
          }
        },
        {
          "color": {
            $in: [
              "grey",
              "white"
            ]
          }
        }
      ]
    }
  },
  {
    $project: {
      "itemsNumber": {
        "$filter": {
          "input": "$items",
          "as": "item",
          "cond": {
            $in: [
              "$$item.name",
              [
                "beer",
                "lettuce"
              ]
            ]
          }
        }
      },
      brand: 1,
      cooler: 1,
      color: 1
    }
  }
])

Kørbart eksempel.




  1. Sådan rettes MongoError:Kan ikke bruge en session, der er afsluttet

  2. Sådan filtreres array i en mongodb-forespørgsel

  3. Mongoose:atomic FindOne-Or-Insert(), opdater ikke eksisterende instans, hvis den findes

  4. Mislykket aggregation på tornado/motor:gav ukendt objekt MotorAggregationCursor