2016-05-05 69 views
0

我想在jsp頁面中實現mongodb文本搜索,但出現錯誤。以下是我的代碼和錯誤。如果您發現代碼有問題,請告訴我。 我們非常感謝您的幫助。提前致謝。在jsp中實現mongodb文本搜索

代碼:

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) 

回答

0

正試圖地圖集合對象,以價值與重要文本:

searchCmd.put( 「文字」,收藏)

您可能只需要執行searchCmd.put(「search」,searchText); ({「search」:「samosa」})