TL;DR :
Gebruik het asynchrone stuurprogramma als de bewerkingen traag zijn, of gebruik in de meeste gevallen het gewone stuurprogramma. U moet de kerndriver niet gebruiken.
MongoDB reguliere driver :
Algemeen stuurprogramma dat u kunt gebruiken om documenten te zoeken, maken, lezen, bijwerken en verwijderen. De find(...)
, updateMany(...)
, deleteMany(...)
en vergelijkbare methoden blijven hangen zolang het resultaat niet wordt geretourneerd of de bewerking niet wordt uitgevoerd (synchroon gedrag). Dit is de driver die het meeste programma gebruikt en is in de meeste gevallen goed.
Hier is een voorbeeld voor het invoegen van een enkel document:
collection.insertOne(doc);
//Do something here.
System.out.println("Inserted!")
MongoDB async-stuurprogramma :
Een ander type stuurprogramma dat u kunt gebruiken om documenten te zoeken, maken, lezen, bijwerken en verwijderen. Deze driver biedt vergelijkbare methoden als de reguliere driver (find(...)
, updateMany(...)
, deleteMany(...)
, enz.).
Het verschil met de reguliere driver is dat de hoofdthread niet blijft hangen omdat de async driver het resultaat in een callback (asynchroon gedrag). Dit stuurprogramma wordt gebruikt wanneer de bewerkingen lang kunnen duren (veel gegevens om door te gaan, hoge latentie, query's op niet-geïndexeerde velden, enz.) en u niet meerdere threads wilt beheren.
Hier is een voorbeeld van het terugbellen bij het invoegen van een enkel document:
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...")
Lees voor meer informatie dit .
MongoDB Core-stuurprogramma
Basislaag van de reguliere en asynchrone stuurprogramma's. Het bevat methoden op laag niveau om alle bewerkingen uit te voeren die gebruikelijk zijn voor de reguliere en asynchrone stuurprogramma's. Tenzij u een nieuwe API / Driver voor MongoDB maakt, moet u de kerndriver niet gebruiken.