В настоящее время я пытаюсь научиться работать с MongoDB в Java. Я создал сборник «заговоры» и вставил документ:MongoDB: Простой вопрос вопроса
final Document plotObj = new Document();
plotObj.put(DataKey.PLOT_UUID.getKey(), plot.getUniqueId());
plotObj.put(DataKey.REGION_ID.getKey(), plot.getRegionId());
plotObj.put(DataKey.REGION_WORLD.getKey(), plot.getRegionWorld());
plotObj.put(DataKey.REGION_OWNER.getKey(), plot.getPlotOwner().isPresent() ? plot.getPlotOwner() : null);
plotObj.put(DataKey.PLOT_TRUSTED.getKey(), new BasicDBList().addAll(plot.getTrusted()));
this.collection.insertOne(plotObj);
«DataKey.PLOT_UUID.getKey()» представляет собой строку. "plot.getUniqueId()" представляет java.util.UUID. После вставки этого документа, я хочу, чтобы запросить его:
public boolean hasPlot(UUID plotId){
final BasicDBObject query = new BasicDBObject(DataKey.PLOT_UUID.getKey(), new BasicDBObject("$eq", plotId));
return this.collection.find(query).iterator().hasNext();
}
Однако эти методы всегда возвращает ложное событие, хотя документ был успешно вставлен.
Возможно, эта проблема может быть исправлена с легкостью, но тем не менее: спасибо заранее! :)
Это может быть следствием поведения «близком к реальному времени» в MongoDB? Я читал об этом, но больше не могу найти ссылку. В mongodb возможно, что mongodb-query не находит объект, который только что был вставлен. Может быть, вы можете установить таймер и протестировать свой запрос с небольшой задержкой? – nabinca
Даже после перезапуска приложения он возвращает false. Мне нужен этот метод, чтобы убедиться, что мне нужно вставить или обновить документ. – leNic
Так что, похоже, осталось только два очевидных варианта: Запланировано ли вы передать свой метод, а не plotId, который вы сохранили в базе данных? или: ваша библиотека не обрабатывает uuid правильно? – nabinca