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

So wenden Sie das Update mit dem gefilterten Positionsoperator mit arrayFilters an

Das sollte sein:

WriteResult wr = getMongoTemplate().updateMulti(
  new Query(where("rates.rateCardId").is(1234)),
  new Update().set("rates.$[item].rate", 200),
  new UpdateOptions()
    .arrayFilters(
      Arrays.asList( Filters.in("item.rateCardId",Arrays.asList(1,2)) )
    ), 
  ProductRates.class
);

Sie müssen sicherstellen, dass der zugrunde liegende Java-Treiber Version 3.6.x oder höher ist, um arrayFilters() zu haben und wahrscheinlich sogar das Hinzufügen von UpdateOptions() unterstützen