2013-12-18 84 views
0

我是mongodb初學者。使用java查詢mongodb文檔

我將ItemName和ItemCategory存儲爲文檔。使用Java我想找到在方法中傳遞的ItemCategory的所有ItemNames。

我試過下面的代碼,但它不工作。

public String[] generate(String category) { 

    MongoClient mongoClient; 
    String temp[] = new String[50001]; 
    String[] prodName = {}; 
    int i = 0, j = 0; 
    int k=0; 
    try { 
     mongoClient = new MongoClient("localhost", 27017); 
     DB db = mongoClient.getDB("test"); 
     DBCollection coll = db.getCollection("products"); 
     DBCursor cursor = coll.find(); 
     BasicDBObject query = new BasicDBObject("ItemCategroy", category); 

     cursor = coll.find(query); 

     try { 
      while (cursor.hasNext()) { 
       temp[i++] = (String) cursor.next().get("ItemName"); 
      } 
      for (k = 0; k < temp.length; k++) { 
       if (temp[k] == null) { 
        k++; 
       } else{ 
        prodName[j++]=temp[k]; 
       } 
      } 
      System.out.println("kkk"+k); 
      /* for (int j = 0; j < nodeNm.length; j++) { 
       System.out.println("printing in jsp " + nodeNm[j]); 
      } */ 
     } finally { 
      cursor.close(); 
     } 

     mongoClient.close(); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } 
    return prodName; 
} 

在這裏generate()方法,我在一個陣列prodName它返回經過category並希望所有的ItemNames

請給予。

回答

0

你能說出什麼是不工作?你是否觀察到錯誤或者沒有匹配?這可能只是由於BasicDBObject query = new BasicDBObject("ItemCategroy", category);中的錯字,你可能應該寫ItemCategory

除此之外,您的代碼對我來說看起來不錯,但我們當然無法確定,除非您發佈了您的集合的示例文檔。

+0

樣品文檔看起來喜歡 - '{ 「_id」:物件( 「528f37fdb55099000c5dfedd」), 「ITEMNAME」: 「項目1」, 「ItemCategory」: 「電子」, 「ItemSubCategory」: 「TV」, 「ItemBrand」:「Samsung」, 「ItemSize」:「20」, 「ItemPrice」:「7500」 }' –

+0

沒問題,所以''ItemCategroy「'確實是一個錯字 - 修復它有幫助嗎? – chk