Tabla de contenido
Primero cree una clase de entidad Usuario:
Uso de criterios de actualización de consultas
addCriteria(Criterios de criterios)
agregado (agregación agregada, tipo de resultado de clase)
set (clave de cadena, valor del objeto)
inc(Clave de cadena, valor numérico)
push(Clave de cadena, valor del objeto)
addToSet (clave de cadena, valor del objeto)
pop (tecla de cadena, posición de posición)
pull (clave de cadena, valor del objeto)
pullAll (clave de cadena, valores de objeto [])
cambiar nombre(String nombre antiguo, String nombre nuevo)
fecha actual (clave de cadena)
max(Clave de cadena, valor numérico)
min(Clave de cadena, valor numérico)
mul (clave de cadena, valor numérico)
addToSetEach(Clave de cadena, Objeto... valores)
pushEach(Clave de cadena, Objeto... valores)
bit a bit (clave de cadena, bit a bit, valor int)
Introducir dependencias
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
Ejemplo de uso mongoTemplate
de MongoDB para agregar, eliminar, modificar y consultar:
-
Primero crea una clase de entidad
User
:
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
private Integer age;
// getters and setters
}
Utilice @Document
anotaciones para marcar la clase de entidad correspondiente a la users
colección de MongoDB y utilice @Id
anotaciones para identificar id
el campo como clave principal.
-
Cree una
UserDao
clase para realizar operaciones de adición, eliminación, modificación y consulta en MongoDB:
@Repository
public class UserDao {
@Autowired
private MongoTemplate mongoTemplate;
public User addUser(User user) {
mongoTemplate.save(user);
return user;
}
public void updateUser(User user) {
Query query = new Query(Criteria.where("id").is(user.getId()));
Update update = new Update().set("name", user.getName())
.set("age", user.getAge());
mongoTemplate.updateFirst(query, update, User.class);
}
public User findUserById(String id) {
Query query = new Query(Criteria.where("id").is(id));
return mongoTemplate.findOne(query, User.class);
}
public List<User> findUsersByName(String name) {
Query query = new Query(Criteria.where("name").is(name));
return mongoTemplate.find(query, User.class);
}
public void deleteUserById(String id) {
Query query = new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query, User.class);
}}
Spring administrará el uso @Repository
de anotaciones y se inyectará el objeto.UserDao
mongoTemplate
addUser
Los métodos se utilizan para agregar usuarios y mongoTemplate.save
los métodos se utilizan para guardar objetos en MongoDB.
updateUser
Los métodos se utilizan para modificar la información del usuario y mongoTemplate.updateFirst
los métodos se utilizan para realizar operaciones de actualización. Query
Una clase representa una condición de consulta, Criteria
una clase representa una colección de condiciones de consulta y Update
una clase representa una colección de operaciones de actualización.
findUserById
El método se utiliza para consultar información del usuario según la ID del usuario y mongoTemplate.findOne
el método se utiliza para consultar un solo objeto.
findUsersByName
El método se utiliza para consultar la lista de usuarios calificados según el nombre de usuario y mongoTemplate.find
el método se utiliza para consultar la lista de objetos.
deleteUserById
El método se utiliza para eliminar información del usuario según la ID del usuario y mongoTemplate.remove
el método se utiliza para eliminar objetos.
-
Finalmente, cree una
UserController
clase para probar las operaciones de adición, eliminación, modificación y consulta de MongoDB:
@RestController
public class UserController {
@Autowired
private UserDao userDao;
@PostMapping("/user")
public User addUser(@RequestBody User user) {
return userDao.addUser(user);
}
@PutMapping("/user")
public void updateUser(@RequestBody User user) {
userDao.updateUser(user);
}
@GetMapping("/user/{id}")
public User findUserById(@PathVariable("id") String id) {
return userDao.findUserById(id);
}
@GetMapping("/users/{name}")
public List<User> findUsersByName(@PathVariable("name") String name) {
return userDao.findUsersByName(name);
}
@DeleteMapping("/user/{id}")
public void deleteUserById(@PathVariable("id") String id) {
userDao.deleteUserById(id);
}
}
Spring administrará el uso @RestController
de anotaciones y se inyectará el objeto.UserController
UserDao
addUser
El método se utiliza para agregar información del usuario y utilizar @PostMapping
anotaciones para marcar solicitudes HTTP POST.
updateUser
El método se utiliza para modificar la información del usuario y utilizar @PutMapping
anotaciones para marcar solicitudes HTTP PUT.
findUserById
El método se utiliza para consultar información del usuario según la ID del usuario y utiliza @GetMapping
anotaciones para marcar las solicitudes HTTP GET.
findUsersByName
El método se utiliza para consultar la lista de usuarios calificados según el nombre de usuario y utiliza @GetMapping
anotaciones para marcar la solicitud HTTP GET.
deleteUserById
El método se utiliza para eliminar información del usuario según la ID del usuario y utiliza @DeleteMapping
anotaciones para marcar las solicitudes HTTP DELETE.
Lo anterior es mongoTemplate
un ejemplo del uso de MongoDB para agregar, eliminar, modificar y consultar.
Uso de criterios de actualización de consultas
Query
y Update
son Criteria
tres conceptos importantes en Spring Data MongoDB, que se utilizan para realizar consultas complejas y operaciones de actualización de MongoDB. Su uso se presenta a continuación:
Métodos en consulta
addCriteria(Criteria criteria)
Agregar condiciones de consulta. Los objetos se pueden utilizar Criteria
para crear condiciones de consulta complejas.
with(Sort sort)
Establecer reglas de clasificación. Los objetos se pueden utilizar Sort
para crear intercalaciones complejas.
with(Pageable pageable)
Establecer reglas de paginación. Puede utilizar PageRequest
objetos para crear reglas de paginación.
fields()
Establezca los campos de consulta. Puede utilizar Fields
objetos para especificar los campos que deben devolverse. Si fields()
no se llama al método, se devuelven todos los campos.
include(String... fields)
Establezca los campos que se devolverán. Mismo fields()
método.
exclude(String... fields)
Establezca campos que no necesitan ser devueltos. Mismo fields()
método.
limit(int limit)
Establezca el número máximo de resultados de la consulta.
skip(int skip)
Establezca el desplazamiento de los resultados de la consulta.
count()
Devuelve el número de resultados de la consulta.
one()
Devuelve el primer registro de resultados de la consulta.
list()
Devuelve todos los registros de los resultados de la consulta.
exists()
Determine si el resultado de la consulta existe.
aggregate(Aggregation aggregation, Class<T> resultType)
Realizar operaciones de agregación. Aggregation
Las operaciones de agregación se pueden construir utilizando objetos. resultType
Especifica el tipo de resultado devuelto.
uso de consulta
Query
Utilice Criteria
objetos para crear condiciones de consulta y establezca parámetros como clasificación y paginación. Por ejemplo:
Query query = new Query(Criteria.where("name").is("Tom").and("age").gte(20));
query.with(Sort.by(Sort.Direction.DESC, "age"));
query.skip(0).limit(10);
El código anterior indica consultar a los usuarios cuyo nombre es "Tom" y cuya edad es mayor o igual a 20 años, ordenarlos en orden descendente por edad y devolver resultados del 1 al 10.
Query
También se admiten llamadas encadenadas:
Query query = new Query()
.addCriteria(Criteria.where("name").is("Tom").and("age").gte(20))
.with(Sort.by(Sort.Direction.DESC, "age"))
.skip(0).limit(10);
Métodos en actualización
set(String key, Object value)
Establezca el valor del campo.
unset(String key)
Eliminar campos.
inc(String key, Number value)
Incrementa el valor de un campo de tipo numérico.
push(String key, Object value)
Agregue elementos a un campo de matriz.
addToSet(String key, Object value)
Agregar elementos a un campo de colección.
pop(String key, Position position)
Eliminar elementos de un campo de matriz.
pull(String key, Object value)
Eliminar elementos de una matriz o campo de colección.
pullAll(String key, Object[] values)
Elimine varios elementos de una matriz o campo de colección.
rename(String oldName, String newName)
Cambie el nombre del campo.
currentDate(String key)
Establezca el valor del campo en la fecha actual.
max(String key, Number value)
Si el valor del campo es menor que el valor especificado, actualice el valor del campo.
min(String key, Number value)
Si el valor del campo es mayor que el valor especificado, el valor del campo se actualiza.
mul(String key, Number value)
Multiplica el valor de un campo numérico por el valor especificado.
addToSetEach(String key, Object... values)
Agregue varios elementos a un campo de colección.
pushEach(String key, Object... values)
Agregue varios elementos a un campo de matriz.
bitwise(String key, Bitwise bitwise, int value)
Realizar operaciones bit a bit.
Los anteriores son los métodos comúnmente utilizados Query
y con la ayuda de estos métodos, se pueden construir operaciones complejas de consulta y actualización.Update
uso de actualización
Update
Se utiliza para crear operaciones de actualización, donde se pueden establecer campos y condiciones actualizados. Por ejemplo:
Update update = new Update().set("name", "Jim").inc("age", 1);
El código anterior suma 1 a la edad del usuario llamado "Jim".
Update
También se admiten llamadas encadenadas:
Update update = new Update()
.set("name", "Jim")
.inc("age", 1);
Uso de criterios
Criteria
Se utiliza para crear condiciones de consulta y admite múltiples operadores, como:
Criteria criteria = Criteria.where("name").is("Tom").and("age").gte(20);
El código anterior indica consultar a los usuarios cuyo nombre es "Tom" y cuya edad es mayor o igual a 20 años.
Criteria
También se admiten llamadas encadenadas:
Criteria criteria = new Criteria()
.andOperator(
Criteria.where("name").is("Tom"),
Criteria.where("age").gte(20)
);
Además andOperator
, también admite operadores lógicos como orOperator
, etc.notOperator
norOperator
Además, Criteria
también se admiten operadores de comparación, como por ejemplo:
Criteria.where("age").gt(18) // 大于
Criteria.where("age").gte(18) // 大于等于
Criteria.where("age").lt(18) // 小于
Criteria.where("age").lte(18) // 小于等于
Criteria.where("age").is(18) // 等于
Criteria.where("age").ne(18) // 不等于
Criteria.where("name").in("Tom", "Jim") // 在集合中
Criteria.where("name").nin("Tom", "Jim") // 不在集合中
Criteria.where("name").regex("pattern") // 正则匹配
Lo anterior es el uso Query
de Update
y Criteria
. Con la ayuda de estos objetos, se pueden realizar operaciones de consulta y actualización de MongoDB más flexibles y eficientes.