реализация текстового поиска mongodb в jsp

Я пытаюсь реализовать текстовый поиск mongodb на странице jsp, но получаю ошибку. Ниже приведен мой код и ошибка. Пожалуйста, дайте мне знать, если вы нашли что-то не так с моим кодом.
Ваша помощь очень ценится. Спасибо заранее.

Код:

Mongo m=new MongoClient("localhost",27017);
DB db = m.getDB("sagar");
String searchText="samosa";
DBCollection collection=db.getCollection("review");
DBObject searchCmd = new BasicDBObject();
searchCmd.put("text",collection);
searchCmd.put("search",searchText);

DBCursor cursor = collection.find(searchCmd);

while(cursor.hasNext())
{
    System.out.println(cursor.next());
}

Ошибка:

type Exception report

message An exception occurred processing JSP page /review.jsp at line 33

description The server encountered an internal error that prevented it from fulfilling this request.

exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /review.jsp at line 33

30:     String id= (String) dbo.get("text");
31:     out.println(id+"n");
32: }*/
33: while(cursor.hasNext())
34: {
35:     System.out.println(cursor.next());
36: }


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
java.lang.IllegalArgumentException: can't serialize class com.mongodb.DBCollectionImpl
    org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:299)
    org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:194)
    org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:136)
    com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:36)
    com.mongodb.OutMessage.putObject(OutMessage.java:289)
    com.mongodb.OutMessage.writeQuery(OutMessage.java:211)
    com.mongodb.OutMessage.query(OutMessage.java:86)
    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:83)
    com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:68)
    com.mongodb.DBCursor._check(DBCursor.java:498)
    com.mongodb.DBCursor._hasNext(DBCursor.java:621)
    com.mongodb.DBCursor.hasNext(DBCursor.java:657)
    org.apache.jsp.review_jsp._jspService(review_jsp.java:93)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

1 ответ

  1. Вы пытаетесь присвоить объекту коллекции карт значение с помощью ключевого текста:

    searchCmd.put («текст», коллекция)

    Может потребоваться только searchCmd.put («search», searchText);

    Например, db.обзоры.найти ({«search»: «samosa»})