TL;RD :
Utilice el controlador asíncrono si las operaciones son lentas o utilice el controlador normal en la mayoría de los casos. No debe usar el controlador principal.
Controlador normal de MongoDB :
Controlador general que puede utilizar para buscar, crear, leer, actualizar y eliminar documentos. El find(...)
, updateMany(...)
, deleteMany(...)
y los métodos similares se bloquearán mientras no se devuelva el resultado o no se realice la operación (comportamiento síncrono). Este es el controlador que usa la mayoría de los programas y es bueno en la mayoría de los casos.
Aquí hay un ejemplo para insertar un solo documento:
collection.insertOne(doc);
//Do something here.
System.out.println("Inserted!")
Controlador asíncrono de MongoDB :
Otro tipo de controlador que puede utilizar para buscar, crear, leer, actualizar y eliminar documentos. Este controlador ofrece métodos similares a los del controlador normal (find(...)
, updateMany(...)
, deleteMany(...)
, etc.).
La diferencia con el controlador normal es que el hilo principal no se bloqueará porque el controlador asíncrono envía el resultado en un devolución-de-llamada (comportamiento asíncrono). Este controlador se usa cuando las operaciones pueden llevar mucho tiempo (una gran cantidad de datos para procesar, alta latencia, consultas en campos no indexados, etc.) y no desea administrar varios subprocesos.
Este es un ejemplo de devolución de llamada al insertar un solo documento:
collection.insertOne(doc, new SingleResultCallback<Void>() {
@Override
public void onResult(final Void result, final Throwable t) {
//Do something here.
System.out.println("Inserted!");
}
});
// Do something to show that the Document was not inserted yet.
System.out.println("Inserting...")
Para obtener más información, lea esto .
Controlador principal de MongoDB
Capa base de los controladores regulares y asíncronos. Contiene métodos de bajo nivel para realizar todas las operaciones comunes a los controladores normales y asíncronos. A menos que esté creando una nueva API/controlador para MongoDB, no debe usar el controlador principal.