2014-02-28 34 views
1

我正在構建一個簡單的Web應用程序,用於按名稱搜索人員。我有幾個包含不同用戶信息的集合。應用程序應該提取所有關於我正在搜索的用戶的信息。 如何搜索該名稱的多個集合? 我第一次在MapReduce,我會appriciate如果你幫我創建這個地圖減少功能或任何其他方法。使用MapReduce從多個MongoDB集合中搜索 - Java

對不起我的英文不好...

搜索輸入到這裏index.html中

<input id="input" type="text" name="fname"> 
<input type="submit"> 

然後,我得到了Results.java的servlet參數應用和結果重定向到其他JSP頁面

String by_fname = request.getParameter("fname"); 

MongoClient mongoClient = new MongoClient("localhost", 27017); 
DB db = mongoClient.getDB("hospital"); 
DBCollection coll = db.getCollection("patients"); 

BasicDBObject query = new BasicDBObject("fname", by_fname); 
DBCursor cursor = coll.find(query); 

ArrayList<Users> userList = new ArrayList<Users>(); 

while (cursor.hasNext()) { 
      DBObject event = cursor.next(); 
      fname = String.valueOf(event.get("fname")); 
      lname = String.valueOf(event.get("lname")); 

      Users user = new Users(); 
      user.setFname(fname); 
      user.setLname(lname); 

      userList.add(user); 
} 

request.setAttribute("userList", userList); 
    request.getServletContext().getRequestDispatcher("/s_results.jsp").forward(request,response); 
+1

「爲該名稱搜索多個集合?」 - 你必須獨立搜索每個集合。另外,map-reduce通常用於聚合(我認爲這不是你的情況)。爲每個要收集信息的集合進行簡單查找並加入客戶端的信息。 – joao

+0

這只是一個例子。我想讓它使用地圖縮小。或者任何其他用於並行搜索的方法 – sAs59

回答

0

如果不實際啓動多個搜索(例如在線程池中),然後在您的客戶端中彙總結果,則無法同時搜索多個集合t代碼。 MongoDB的所有搜索,更新和聚合選項都是如此。他們都在一個集合上運作。

您可能需要考慮將數據存儲在單個集合中,以允許執行單個搜索,而不是引入組合多個搜索中多個搜索的複雜性。