Bạn hiện đang xem phiên bản cũ hơn của tài liệu trình điều khiển Java. Đối với phiên bản gần đây nhất của tài liệu tham khảo, hãy xem trang web tài liệu trình điều khiển Java MongoDB của chúng tôi. Show Tài liệu lái xe Java MongoDBChào mừng bạn đến với trung tâm tài liệu trình điều khiển Java MongoDB cho bản phát hành trình điều khiển 3.9. Những gì mới trong 3.9Đối với các tính năng mới chính của 3.9, hãy xem những gì mới. Nâng cấpĐể nâng cấp, tham khảo tài liệu xem xét nâng cấp. Trình điều khiển MongoDBĐối với trình điều khiển MongoDB đồng bộ, xem phần Trình điều khiển MongoDB. Trình điều khiển Async MongoDBĐối với trình điều khiển Async không đồng bộ mới, phần trình điều khiển Async MongoDB. Thư viện BSONThư viện BSON hỗ trợ toàn diện thông số kỹ thuật BSON, định dạng lưu trữ dữ liệu và chuyển giao mạng mà MongoDB sử dụng cho các tài liệu trên mạng. Hướng dẫn tham khảo cung cấp thông tin về việc làm việc với các tài liệu, cách sử dụng codec và hỗ trợ JSON mở rộng. Chào mừng bạn đến với trang web tài liệu cho người lái xe Java, người lái xe MongoDB chính thức cho các ứng dụng Java đồng bộ. Tải xuống bằng Maven hoặc Gradle hoặc thiết lập một dự án có thể chạy bằng cách làm theo hướng dẫn bắt đầu nhanh của chúng tôi.Maven or Gradle, or set up a runnable project by following our Quick Start guide. Tìm hiểu cách thiết lập kết nối với MongoDB Atlas và bắt đầu làm việc với dữ liệu trong phần Bắt đầu nhanh. Xem các ví dụ về cú pháp trình điều khiển cho các lệnh MongoDB thông thường trong phần tham chiếu nhanh. Để biết các đoạn mã và giải thích mã hoàn toàn có thể chạy được cho các phương pháp phổ biến, hãy xem phần Ví dụ sử dụng. Tìm hiểu cách thực hiện các tác vụ sau bằng trình điều khiển Java trong phần Nguyên tắc cơ bản:
Tài liệu API trình điều khiển Java MongoDB chứa một số thư viện được tổ chức bởi chức năng. Để biết thông tin chi tiết về các lớp và phương thức trong mỗi thư viện, hãy xem bảng sau đây để biết mô tả và liên kết của họ đến tài liệu API. Để biết câu trả lời cho các câu hỏi thường gặp về trình điều khiển Java MongoDB, hãy xem phần Câu hỏi thường gặp (Câu hỏi thường gặp). Tìm hiểu cách báo cáo lỗi, đóng góp cho người lái xe và tìm thêm tài nguyên để đặt câu hỏi và nhận trợ giúp trong phần Các vấn đề & Trợ giúp. Để biết các biểu đồ tương thích hiển thị phiên bản trình điều khiển Java được đề xuất cho mỗi phiên bản máy chủ MongoDB, hãy xem phần Tương thích. Để biết danh sách các tính năng và thay đổi mới trong mỗi phiên bản, hãy xem phần mới. Tìm hiểu những thay đổi bạn có thể cần thực hiện cho ứng dụng của mình để nâng cấp các phiên bản trình điều khiển trong phần phiên bản trình điều khiển nâng cấp. Tìm hiểu những thay đổi bạn có thể cần thực hiện cho ứng dụng của mình để di chuyển từ API Legacy sang API hiện tại trong phần Di chuyển từ phần API Legacy. Ghé thăm Trung tâm phát triển và Đại học MongoDB để tìm hiểu thêm về người lái xe Java MongoDB. Trung tâm phát triển cung cấp các hướng dẫn và sự tham gia xã hội cho các nhà phát triển. Để tìm hiểu cách sử dụng các tính năng MongoDB với trình điều khiển Java, hãy xem trang Cách thức và bài viết.How To's and Articles page. Để đặt câu hỏi và tham gia vào các cuộc thảo luận với các nhà phát triển đồng nghiệp sử dụng trình điều khiển Java, hãy xem trang Diễn đàn.forums page. Đại học MongoDB cung cấp các khóa học miễn phí để dạy mọi người cách sử dụng MongoDB. Cập nhậtNgày 25 tháng 3 năm 2021
Ngày 21 tháng 10 năm 2020
Giới thiệuTrong bài đăng trên blog đầu tiên này của Sê -ri Bắt đầu nhanh Java, tôi sẽ chỉ cho bạn cách thiết lập dự án Java của bạn với Maven và thực hiện lệnh MongoDB trong Java. Sau đó, chúng tôi sẽ khám phá các hoạt động phổ biến nhất - chẳng hạn như tạo, đọc, cập nhật và xóa - sử dụng trình điều khiển Java MongoDB. Tôi cũng sẽ cho bạn thấy một số tùy chọn và tính năng mạnh mẽ hơn có sẵn như là một phần của trình điều khiển Java MongoDB cho mỗi hoạt động này, cung cấp cho bạn một nền tảng kiến thức thực sự tuyệt vời để xây dựng khi chúng tôi trải qua loạt phim.MongoDB Java driver. I will also show you some of the more powerful options and features available as part of the MongoDB Java driver for each of these operations, giving you a really great foundation of knowledge to build upon as we go through the series. Trong các bài đăng trên blog trong tương lai, chúng tôi sẽ tiếp tục và làm việc thông qua:
Tại sao MongoDB và Java?Điều kiện tiên quyếtĐể làm theo, bạn có thể sử dụng bất kỳ môi trường nào bạn thích và môi trường phát triển tích hợp mà bạn chọn. Tôi sẽ sử dụng Maven 3.6.2 và Java OpenJDK 13, nhưng tất cả các mã sẽ tương thích với các phiên bản Java 8 đến 13, vì vậy hãy sử dụng JDK của sự lựa chọn của bạn và cập nhật phiên bản Java phù hợp trong tệp pom.xml Chúng tôi sắp thiết lập.Maven 3.6.2 and the Java OpenJDK 13, but all the code will be compatible with Java versions 8 to 13, so feel free to use the JDK of your choice and update the Java version accordingly in the pom.xml file we are about to set up. Nhận cụm M0 miễn phí của bạn trên MongoDB Atlas ngay hôm nay. Nó miễn phí mãi mãi và bạn sẽ có thể sử dụng nó để làm việc với các ví dụ trong loạt blog này.MongoDB Atlas today. It's free forever, and you'll be able to use it to work with the examples in this blog series. Hãy nhảy vào và xem xét Java và MongoDB hoạt động tốt như thế nào. Được thiết lậpĐể bắt đầu, chúng tôi sẽ cần thiết lập một dự án Maven mới. Bạn có hai tùy chọn tại thời điểm này. Bạn có thể sao chép kho lưu trữ Git của loạt bài này hoặc bạn có thể tạo và thiết lập dự án Maven. Sử dụng kho lưu trữ GitNếu bạn chọn sử dụng Git, bạn sẽ nhận được tất cả mã ngay lập tức. Tôi vẫn khuyên bạn nên đọc qua thiết lập thủ công. Bạn có thể sao chép kho lưu trữ nếu bạn thích với lệnh sau. Thiết lập thủ côngBạn có thể sử dụng IDE yêu thích của mình để tạo dự án Maven mới cho bạn hoặc bạn có thể tạo Dự án Maven theo cách thủ công. Dù bằng cách nào, bạn nên lấy kiến trúc thư mục sau: Tệp pom.xml phải chứa mã sau: Để xác minh rằng mọi thứ hoạt động chính xác, bạn sẽ có thể tạo và chạy một "Xin chào MongoDB đơn giản!" chương trình. Trong Sau đó biên dịch và thực thi nó với IDE của bạn hoặc sử dụng dòng lệnh trong thư mục gốc (trong đó thư mục Kết quả sẽ trông như thế này: Lưu ý: Nếu bạn thấy một số cảnh báo về quyền truy cập phản xạ bất hợp pháp từ Kết nối với JavaBây giờ, dự án Maven của chúng tôi hoạt động và chúng tôi đã giải quyết các phụ thuộc của mình, chúng tôi có thể bắt đầu sử dụng Atlas MongoDB với Java. Nếu bạn đã nhập bộ dữ liệu mẫu như được đề xuất trong bài đăng blog Atlas bắt đầu nhanh, thì với mã Java mà chúng tôi sắp tạo, bạn sẽ có thể thấy một danh sách các cơ sở dữ liệu trong bộ dữ liệu mẫu.sample dataset as suggested in the Quick Start Atlas blog post, then with the Java code we are about to create, you will be able to see a list of the databases in the sample dataset. Bước đầu tiên là khởi tạo Trong Như bạn có thể thấy, chuỗi kết nối MongoDB được lấy từ các thuộc tính hệ thống, vì vậy chúng tôi cần thiết lập điều này. Khi bạn đã truy xuất chuỗi kết nối Atlas MongoDB của mình, bạn có thể thêm thuộc tính hệ thống Hoặc nếu bạn thích sử dụng maven trong dòng lệnh, đây là dòng lệnh tương đương bạn có thể chạy trong thư mục gốc: Lưu ý: Đừng quên các trích dẫn kép xung quanh URI MongoDB để tránh những bất ngờ từ vỏ của bạn. Đầu ra tiêu chuẩn sẽ trông như thế này: Chèn hoạt độngĐược thiết lậpTrong phần Kết nối với Java, chúng tôi đã tạo các lớp Nếu bạn không thiết lập cụm miễn phí của mình trên MongoDB Atlas, thì bây giờ là thời điểm tuyệt vời để làm điều đó. Nhận các hướng dẫn để tạo cụm của bạn.creating your cluster. Kiểm tra mô hình thu thập và dữ liệuTrong bộ dữ liệu mẫu, bạn có thể tìm thấy cơ sở dữ liệu Đây là đại diện JSON của một tài liệu trong vỏ Mongo.mongo shell. Như bạn có thể thấy, MongoDB lưu trữ các tài liệu BSON và cho mỗi cặp giá trị khóa, BSON chứa khóa và giá trị cùng với loại của nó. Đây là cách MongoDB biết rằng Chúng tôi có 10.000 sinh viên ( Trong trường đại học này, Chọn cơ sở dữ liệu và bộ sưu tậpĐầu tiên, chúng tôi cần thiết lập lớp Tạo tài liệu BSONThứ hai, chúng ta cần đại diện cho học sinh mới này trong Java bằng lớp Như bạn có thể thấy, chúng tôi đã sao chép cùng một mô hình dữ liệu từ các tài liệu hiện có trong bộ sưu tập này khi chúng tôi đảm bảo rằng Ngoài ra, trình điều khiển Java sẽ tạo ra trường Cũng lưu ý rằng chúng tôi đang chèn một tài liệu vào một bộ sưu tập và cơ sở dữ liệu hiện có, nhưng nếu những điều này đã tồn tại, MongoDB sẽ tự động tạo chúng ngay lần đầu tiên bạn đi chèn một tài liệu vào bộ sưu tập. Chèn tài liệuCuối cùng, chúng ta có thể chèn tài liệu này. Mã cuối cùng để chèn một tài liệuDưới đây là lớp Bạn có thể thực hiện lớp này với dòng lệnh maven sau trong thư mục gốc hoặc sử dụng IDE của bạn (xem ở trên để biết thêm chi tiết). Đừng quên các trích dẫn kép xung quanh URI MongoDB để tránh những bất ngờ. Lưu ý rằng thứ tự của các trường khác với tài liệu ban đầu với Chúng tôi có thể nhận được chính xác cùng một đơn đặt hàng nếu chúng tôi muốn bằng cách tạo tài liệu như thế này. Nhưng nếu bạn làm mọi thứ một cách chính xác, điều này không có bất kỳ tác động nào đến mã và logic của bạn vì các trường trong tài liệu JSON không được đặt hàng. Một đối tượng là một tập hợp các cặp tên/giá trị không được đặt hàng. Chèn nhiều tài liệuBây giờ chúng ta đã biết cách tạo một tài liệu, hãy tìm hiểu cách chèn nhiều tài liệu. Tất nhiên, chúng tôi chỉ có thể bọc hoạt động Thay vào đó, chúng tôi muốn bọc 10 tài liệu của chúng tôi và gửi chúng trong một cuộc gọi đến cụm và chúng tôi chỉ muốn nhận được một xác nhận chèn cho toàn bộ danh sách. Hãy tái cấu trúc mã. Đầu tiên, hãy làm cho Trình tạo ngẫu nhiên trở thành trường Hãy làm một phương pháp nhà máy lớp. Và bây giờ chúng ta có thể sử dụng điều này để chèn 10 tài liệu cùng một lúc. Như bạn có thể thấy, chúng tôi hiện đang gói các tài liệu lớp của chúng tôi vào một danh sách và chúng tôi đang gửi danh sách này trong một cuộc gọi duy nhất với phương thức Theo mặc định, phương thức Do đó, với Như bạn có thể thấy ở đây, đây không phải là hành vi chúng tôi muốn bởi vì tất cả các lớp hoàn toàn độc lập từ người này sang cái khác. Vì vậy, nếu một trong số họ thất bại, chúng tôi muốn xử lý tất cả các lớp và sau đó quay trở lại một ngoại lệ cho những người thất bại. Đây là lý do tại sao bạn thấy tham số thứ hai Mã cuối cùng để chèn nhiều tài liệuHãy tái cấu trúc mã một chút và đây là lớp Một lời nhắc nhở, mọi hoạt động ghi (tạo, thay thế, cập nhật, xóa) được thực hiện trên một tài liệu là axit trong MongoDB. Điều đó có nghĩa là Đọc tài liệuTạo dữ liệuChúng tôi đã tạo ra lớp Chúng tôi đã viết 11 lớp mới, một cho học sinh có Một lời nhắc nhở, đây là các lớp của Chúng tôi cũng đã thảo luận về các loại BSON và chúng tôi lưu ý rằng MongoDB coi một số loại tương đương với mục đích so sánh. Ví dụ, các loại số trải qua chuyển đổi trước khi so sánh. Vì vậy, đừng ngạc nhiên nếu tôi lọc với số nguyên và khớp một tài liệu có chứa số kép chẳng hạn. Nếu bạn muốn lọc tài liệu theo các loại giá trị, bạn có thể sử dụng toán tử $ type.$type operator. Đọc một tài liệu cụ thểHãy đọc tài liệu ở trên. Để đạt được điều này, chúng tôi sẽ sử dụng phương pháp Vui lòng tạo lớp Ngoài ra, hãy đảm bảo bạn thiết lập Ngoài ra, bạn có thể sử dụng dòng lệnh Maven này trong dự án gốc của mình (nơi thư mục Đầu ra tiêu chuẩn phải là: Người lái xe MongoDB đi kèm với một vài người trợ giúp để giảm bớt việc viết các truy vấn này. Đây là một truy vấn tương đương bằng phương pháp Tất nhiên, tôi đã sử dụng nhập tĩnh để làm cho mã nhỏ gọn và dễ đọc nhất có thể. Đọc một loạt các tài liệuTrong ví dụ trước, lợi ích của những người trợ giúp này là không rõ ràng, nhưng hãy để tôi chỉ cho bạn một ví dụ khác trong đó tôi đang tìm kiếm tất cả các lớp với Student_id lớn hơn hoặc bằng 10.000.student_id greater than or equal to 10,000. Như bạn có thể thấy, tôi đang sử dụng toán tử Trình lặpPhương thức Danh sáchDanh sách thường dễ thao tác hơn so với trình lặp, vì vậy chúng tôi cũng có thể làm điều này để truy xuất trực tiếp một Người tiêu dùngChúng tôi cũng có thể sử dụng
Con trỏ, sắp xếp, bỏ qua, giới hạn và dự đoánNhư chúng ta đã thấy ở trên với ví dụ Nếu bạn đã quen thuộc với các con trỏ trong vỏ Mongo, bạn sẽ biết rằng các phép biến đổi có thể được áp dụng cho nó. Một con trỏ có thể được sắp xếp và các tài liệu mà nó chứa có thể được chuyển đổi bằng cách sử dụng một hình chiếu. Ngoài ra, một khi con trỏ được sắp xếp, chúng ta có thể chọn bỏ qua một vài tài liệu và giới hạn số lượng tài liệu trong đầu ra. Điều này rất hữu ích để thực hiện phân trang trong frontend của bạn chẳng hạn.mongo shell, you know that transformations can be applied to it. A cursor can be sorted and the documents it contains can be transformed using a projection. Also, once the cursor is sorted, we can choose to skip a few documents and limit the number of documents in the output. This is very useful to implement pagination in your frontend for example. Hãy kết hợp mọi thứ chúng ta đã học trong một truy vấn: Đây là đầu ra chúng tôi nhận được: Hãy nhớ rằng các tài liệu được trả về theo thứ tự tự nhiên, vì vậy nếu bạn muốn đặt hàng đầu ra của mình, bạn cần sắp xếp con trỏ của mình để đảm bảo không có sự ngẫu nhiên trong thuật toán của bạn.natural order, so if you want your output ordered, you need to sort your cursors to make sure there is no randomness in your algorithm. Chỉ mụcNếu bạn muốn thực hiện các truy vấn này (có hoặc không sắp xếp) hiệu quả, bạn sẽ IndelIndexes!you needindexes! Để làm cho truy vấn cuối cùng của tôi hiệu quả, tôi nên tạo chỉ mục này: Khi tôi chạy giải thích về truy vấn này, đây là kế hoạch chiến thắng tôi nhận được:explain on this query, this is the winning plan I get: Với chỉ mục này, chúng ta có thể thấy rằng chúng ta không có giai đoạn sắp xếp, vì vậy chúng ta không thực hiện một loại trong bộ nhớ vì các tài liệu đã được sắp xếp "miễn phí" và được trả về theo thứ tự của chỉ mục.SORT stage, so we are not doing a sort in memory as the documents are already sorted "for free" and returned in the order of the index. Ngoài ra, chúng ta có thể thấy rằng chúng ta không có bất kỳ giai đoạn tìm nạp nào, vì vậy đây là một truy vấn được bảo hiểm, loại truy vấn hiệu quả nhất mà bạn có thể chạy trong MongoDB. Thật vậy, tất cả các thông tin chúng tôi đang trả lại ở cuối đã có trong chỉ mục, vì vậy bản thân chỉ mục chứa mọi thứ chúng tôi cần để trả lời truy vấn này.FETCH stage, so this is a covered query, the most efficient type of query you can run in MongoDB. Indeed, all the information we are returning at the end is already in the index, so the index itself contains everything we need to answer this query. Mã cuối cùng để đọc tài liệuCập nhật tài liệuCập nhật một tài liệuHãy chỉnh sửa tài liệu với Vui lòng tạo lớp Như bạn có thể thấy trong ví dụ này, phương thức
Để chạy chương trình này, hãy đảm bảo bạn thiết lập Ngoài ra, bạn có thể sử dụng dòng lệnh Maven này trong dự án gốc của mình (nơi thư mục Đầu ra tiêu chuẩn sẽ trông như thế này: Upsert một tài liệuUPSERT là sự pha trộn giữa hoạt động chèn và bản cập nhật. Nó xảy ra khi bạn muốn cập nhật một tài liệu, giả sử nó tồn tại, nhưng nó thực sự chưa tồn tại trong cơ sở dữ liệu của bạn. Trong MongoDB, bạn có thể đặt một tùy chọn để tạo tài liệu này một cách nhanh chóng và tiếp tục với hoạt động cập nhật của bạn. Đây là một hoạt động UPSERT. Trong ví dụ này, tôi muốn thêm một bình luận vào các lớp của học sinh 10002 của tôi cho lớp 10 nhưng tài liệu này chưa tồn tại. Như bạn có thể thấy, tôi đang sử dụng tham số thứ ba của hoạt động cập nhật để đặt tùy chọn UPSERT thành TRUE. Tôi cũng đang sử dụng phương pháp tĩnh Đây là đầu ra chúng tôi nhận được: Cập nhật nhiều tài liệuGiống như cách tôi có thể cập nhật một tài liệu với Trong ví dụ này, tôi đang sử dụng cùng một Phương pháp FindOneandupdateCuối cùng, chúng tôi có một phương pháp rất hữu ích cuối cùng có sẵn trong trình điều khiển Java MongoDB: Trong hầu hết các ứng dụng web, khi người dùng cập nhật một cái gì đó, họ muốn thấy bản cập nhật này được phản ánh trên trang web của họ. Nếu không có phương thức Phương pháp Như bạn có thể thấy trong ví dụ này, bạn có thể chọn phiên bản nào của tài liệu bạn muốn trả về bằng tùy chọn thích hợp. Tôi cũng đã sử dụng ví dụ này để cho bạn thấy một loạt các nhà khai thác cập nhật:
Có một vài nhà khai thác cập nhật khác. Bạn có thể tham khảo toàn bộ danh sách trong tài liệu của chúng tôi.documentation. Mã cuối cùng để cập nhậtXóa tài liệuXóa một tài liệuHãy xóa tài liệu ở trên. Để đạt được điều này, chúng tôi sẽ sử dụng phương pháp Vui lòng tạo lớp Như bạn có thể thấy trong ví dụ này, phương thức Để chạy chương trình này, hãy đảm bảo bạn thiết lập Ngoài ra, bạn có thể sử dụng dòng lệnh Maven này trong dự án gốc của mình (nơi thư mục Đầu ra tiêu chuẩn sẽ trông như thế này: FindOneAndDelete()Bạn có gắn kết cảm xúc với tài liệu của bạn và muốn có cơ hội nhìn thấy nó lần cuối trước khi quá muộn? Chúng tôi có những gì bạn cần. Phương pháp
Đây là đầu ra chúng tôi nhận được: Xóa nhiều tài liệuLần này chúng tôi sẽ sử dụng Đây là đầu ra chúng tôi nhận được: Xóa một bộ sưu tậpViệc xóa tất cả các tài liệu khỏi một bộ sưu tập sẽ không xóa bản thân bộ sưu tập vì một bộ sưu tập cũng chứa siêu dữ liệu như định nghĩa chỉ mục hoặc phân phối chunk nếu bộ sưu tập của bạn bị chia cắt chẳng hạn. Nếu bạn muốn loại bỏ toàn bộ bộ sưu tập và tất cả các siêu dữ liệu được liên kết với nó, thì bạn cần sử dụng phương pháp Mã cuối cùng để xóa các hoạt độngGói lênVới bài đăng trên blog này, chúng tôi đã đề cập đến tất cả các hoạt động cơ bản, chẳng hạn như tạo và đọc và cũng đã thấy cách chúng tôi có thể dễ dàng sử dụng các chức năng mạnh mẽ có sẵn trong trình điều khiển Java cho MongoDB. Bạn có thể tìm thấy các liên kết đến các bài đăng trên blog khác của loạt bài này ngay bên dưới. Nếu bạn muốn tìm hiểu thêm và sâu sắc về kiến thức của mình nhanh hơn, tôi khuyên bạn nên xem M220J: MongoDB cho đào tạo nhà phát triển Java có sẵn miễn phí tại Đại học MongoDB.MongoDB University. |