sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik elemMatch in array doen met mongodb?

Ik denk dat je het kunt doen met aggregaties

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", [] ]
      }
    }
  }
])

Werkende Mongo-speeltuin




  1. Mogelijkheid dat dubbele Mongo ObjectId's worden gegenereerd in twee verschillende collecties?

  2. Bereken eerste-orde-derivaat met MongoDB-aggregatieraamwerk

  3. Mongo-queryparameters opgeven vanuit clientcontroller (MEAN.JS)

  4. Mongodb-aggregatie:alleen overeenkomende elementen van een array retourneren?