TL;DR :
Използвайте асинхронния драйвер, ако операциите са бавни, или използвайте обикновения драйвер в повечето случаи. Не трябва да използвате основния драйвер.
Редовен драйвер за MongoDB :
Общ драйвер, който можете да използвате за търсене, създаване, четене, актуализиране и изтриване на документи. find(...)
, updateMany(...)
, deleteMany(...)
и подобни методи ще висят, докато резултатът не бъде върнат или операцията не е извършена (синхронно поведение). Това е драйверът, който повечето програми използват и е добър в повечето случаи.
Ето пример за вмъкване на единичен документ:
collection.insertOne(doc);
//Do something here.
System.out.println("Inserted!")
Асинхронен драйвер MongoDB :
Друг тип драйвер, който можете да използвате за търсене, създаване, четене, актуализиране и изтриване на документи. Този драйвер предлага методи, подобни на обикновения драйвер (find(...)
, updateMany(...)
, deleteMany(...)
и т.н.).
Разликата с обикновения драйвер е, че основната нишка няма да виси, защото асинхронният драйвер изпраща резултата в обратно повикване (асинхронно поведение). Този драйвер се използва, когато операциите могат да отнемат много време (много данни за преминаване, голямо забавяне, заявка за неиндексирани полета и т.н.) и не искате да управлявате множество нишки.
Ето пример за обратно извикване при вмъкване на единичен документ:
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...")
За повече информация прочетете това .
Основен драйвер на MongoDB
Базов слой на обикновените и асинхронните драйвери. Той съдържа методи на ниско ниво за извършване на всички операции, общи за обикновените и асинхронните драйвери. Освен ако не създавате нов API/драйвер за MongoDB, не трябва да използвате основния драйвер.