MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie kann ich elemMatch innerhalb eines Arrays mit Mongodb ausführen?

Ich denke, Sie können es mit Aggregationen machen

db.collection.aggregate([
  {
    $match: {
      "BookingData.products": { "$exists": true }
    }
  },
  {
    $set: {
      "BookingData.products": {
        "$filter": {
          "input": "$BookingData.products",
          "cond": {
            $and: [
              { $ne: [ "$$this.ProductID", undefined ] },
              { $ne: [ "$$this._id", null ] },
              { $ne: [ "$$this.IsDeliveryFailed", "Yes" ] }
            ]
          }
        }
      }
    }
  },
  {
    $match: {
      $expr: {
        $ne: [ "$BookingData.products", [] ]
      }
    }
  }
])

Arbeitender Mongo-Spielplatz