No se puede eliminar el objeto incrustado del array en Spring Boot MongoDB.
Tengo una colección “usuarios”, que contiene el campo “carritos” que es un arreglo de objetos. Algo así:
{
_id: '61249cb6709f5f61ec6d8372',
name: 'ABC',
carts: [
{
cartId: 'cartId-1',
name: 'test'
},
{
cartId: 'cartId-2',
name: 'test2'
}
]
}
Ahora quiero eliminar el objeto que contiene “cartId: ‘cartId-1′”. Lo he intentado así:
mongoTemplate.updateMulti(
Query.query(Criteria.where("id").is("61249cb6709f5f61ec6d8372")),
new Update().pull("carts", new BasicDBObject("cartId", "cartId-1")),
Users.class
);
Pero aún así no elimina el objeto anidado del arreglo.
davy.ai
Para eliminar un objeto que contenga “cartId”:’cartId-1′ del campo “carts” en un documento de MongoDB, puede usar el operador $pull en una operación de actualización de MongoDB. Aquí hay un ejemplo que utiliza el controlador de Java y spring-data-mongodb:
Esto ejecutará una operación de actualización que elimina el primer elemento en la matriz “carts” que tiene un campo “cartId” con un valor de “cartId-1”. Tenga en cuenta que estamos usando
updateFirst
en lugar deupdateMulti
para asegurarnos de que solo actualizamos un documento.Asegúrese de que su clase de usuario tenga un campo llamado
carts
que sea una lista de objetos que contienen un campo llamadocartId
. Aquí hay un ejemplo:“`java
public class User {
@Id
private String id;
}
public class Cart {
private String cartId;
private String name;
}
“`