sql >> データベース >  >> NoSQL >> MongoDB

Java Webプロジェクトのcontext.xmlでMongoデータベース接続を作成するにはどうすればよいですか?

    MongoDBデータベースに接続し、JSPページでクエリ結果を表示するための構成を含むサンプルサーブレット/JSPコード。

    (i)MongoDBデータベース(META-INF / context.xml)にアクセスするためのJNDI構成:

    <Context>
        <Resource name="mongodb/mongoClient"
                  auth="Container"
                  type="com.mongodb.MongoClient"
                  closeMethod="close"
                  factory="com.mongodb.client.jndi.MongoClientFactory"
                  singleton="true"
                  connectionString="mongodb://localhost:27017" />
    </Context>
    

    (ii)WEB-INF / web.xml(これを「web-app」タグ内に含めます):

     <resource-ref>
         <res-ref-name>mongodb/mongoClient</res-ref-name>
         <res-type>com.mongodb.MongoClient</res-type>
         <res-auth>Container</res-auth>
    </resource-ref>
    

    (iii)サーブレットクラス:

    public class TestServlet extends HttpServlet {
    
        @Resource(name="java:comp/env/mongodb/mongoClient")
        private MongoClient client;
    
        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            
            // ---- This works too; can be used instead of the @Resource  ----
            //try {
            //  Context ctx = new InitialContext();
            //  client = (MongoClient) ctx.lookup("java:comp/env/mongodb/mongoClient");
            //}
            //catch (NamingException ex) {
            //  throw new ServletException(ex);
            //}
    
            MongoCollection<Document> coll = client.getDatabase("test")
                                                   .getCollection("books");
            
            List<Document> docData = new ArrayList<>();
            coll.find()
                 .projection(new Document("title", 1)
                                    .append("author", 1)
                                    .append("_id", 0))
                .limit(10)
                .into(docData);
            List<String> data = docData.stream()
                                       .map(doc -> doc.get("title") + ", " + doc.get("author"))
                                       .collect(Collectors.toList());
            req.setAttribute("bookdata", data);
        
            RequestDispatcher view = req.getRequestDispatcher("view.jsp");
            view.forward(req, resp);
        }
    }
    

    (iv)view.jsp:

    <html>
        <head>
            <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
            <title>Test App</title>
        </head>
        <body>
            <h3>Books List</h3>
        
            <c:forEach items="${bookdata}" var="book">
                ${book}<br>
            </c:forEach>
        ...
    



    1. mongodbdockerイメージ認証に失敗しました

    2. idObjectを使用して日付でフィルタリングする

    3. Mongo NativeQueryを使用してMongoDBDBRef配列を解決し、解決されたドキュメントで作業する

    4. Mongooseを使用してMongoDBトランザクションを使用するにはどうすればよいですか?