sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo aplicar la actualización usando el operador posicional filtrado con arrayFilters

Eso debería ser:

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
);

Debe asegurarse de que el controlador Java subyacente sea una versión 3.6.x o superior para tener arrayFilters() y es probable que incluso admita la adición de UpdateOptions()