Mongodb Java Driver возвращает все документы вместо того, чтобы соответствовать фильтру в сервле JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Mongodb Java Driver возвращает все документы вместо того, чтобы соответствовать фильтру в сервле Java

Сообщение Anonymous »

Я строю веб -приложение Tracker Tracker, используя Java Servlets и MongoDB. Я хочу отфильтровать документы расходов на основе пользователя и категории (например, пользователь: «chir», категория: «Образование»).
Однако, когда я запускаю код ниже, mongodb возвращает вместо того, чтобы соответствовать фильтру. />

Код: Выделить всё

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();

try {
String user = request.getParameter("username");
String category = request.getParameter("category");

if (user == null || user.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
out.println(gson.toJson(new ResponseMessage("❌ User parameter is required")));
return;
}

// ✅ Build MongoDB query
Document query = new Document("user", user);
if (category != null && !category.trim().isEmpty()) {
query.append("category", category.trim());
}

System.out.println("📡 QUERY => " + query.toJson());

List expensesList = new ArrayList();

// ✅ Double check this is correct collection!
try (MongoCursor cursor = expenseCollection.find(query).iterator()) {
while (cursor.hasNext()) {
Document doc = cursor.next();
System.out.println("✅ Found: " + doc.toJson());
expensesList.add(doc);
}
}

response.setStatus(HttpServletResponse.SC_OK);
out.println(gson.toJson(expensesList));

} catch (Exception e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
out.println(gson.toJson(new ResponseMessage("❌ Error fetching expenses: " + e.getMessage())));
}
}

< /code>
Вот пример документа из моей коллекции Mongodb:
{
«_ id»: {"$ oid": "Queckid"},
"Пользователь": "Chir",
"Категория": "Образование",
": 1000
}
, несмотря на это, Docements quements. Я напечатал фильтр, и он выглядит правильно. Я также проверил аналогичные запросы в MongoDB Compass, и они работают там. 
Я ожидал, что функция find () 
возвращает только только документы, которые соответствуют как пользователю , так и категории .
I пробовали:
  • pringmy pring>

    pringmifit warmition Подключение DataBase Connection ConnectAbase ConnectAbas объект запроса (

    Код: Выделить всё

    filter.toJson()
    )
  • В твердом кодировании значений фильтров
  • Запуск одного и того же запроса в Mongodb Compass (там работает нормально)
до сих пор java возвращает все документы. Процессы фильтровали в сервисе?
среда:
  • java 23
  • Mongodb Driver: org.mongodb: mongodb-driver-sync: 4.11.1
  • . (2)


Подробнее здесь: https://stackoverflow.com/questions/795 ... n-java-ser

Вернуться в «JAVA»