Trình điều khiển mongodb-đồng bộ hóa vs trình điều khiển mongo-java

Với 2 cách kết nối ở trên, các bạn sẽ thao tác với cơ sở dữ liệu thông qua BSON của mongo cung cấp. Nghĩa là bạn phải chuyển đổi giữa lớp Java và BSON để thao tác với mongoDB. Thực tế công việc này khá là bất tiện, nhất là những Object Java với rất nhiều thuộc tính sẽ cực kỳ tốn thời gian

Tôi sẽ giới thiệu các bạn kết nối MongoDB mà không cần phải chuyển Object Java sang Object của MongoDB

Đầu tiên, hãy tạo một ConnectionString

ConnectionString connectionString = new ConnectionString("mongodb://" + ip + ":" + port);

Tiếp theo, cần cấu hình CodecRegistry để xử lý sự cố chuyển đổi giữa POJO và BSON

CodecRegistry pojoCodecRegistry = fromProviders(PojoCodecProvider.builder().automatic(true).build());

Chúng ta cần thêm DefaultCodecRegistry, cái mà có thể xử lý tất cả các kiểu của Java như Boolean, Double, String, BigDecimal,

Java là một trong những ngôn ngữ lập trình biến phổ biến nhất trong cộng đồng MongoDB. Đối với người dùng mới, điều quan trọng là cung cấp một cái nhìn tổng quan về cách làm việc với trình điều khiển Java MongoDB và cách sử dụng MongoDB làm nhà phát triển Java

Trong bài đăng này, trước khi các nhà phát triển Java/JVM mới đến với MongoDB, chúng tôi sẽ cung cấp cho bạn một hướng dẫn về cách bắt đầu, bao gồm

  • Cài đặt
  • Thiết lập các thuộc tính của bạn
  • Connected connection
  • Bộ sưu tập và tài liệu là gì?
  • Những điều cơ bản của công việc viết và đọc từ cơ sở dữ liệu
  • Tổng quan về một số thư viện JVM

Cài đặt

Thiết lập các thuộc tính của bạn

Connected connection

Bộ sưu tập và tài liệu là gì?

Những điều cơ bản của công việc viết và đọc từ cơ sở dữ liệu

Tổng quan về một số thư viện JVM

Các hướng dẫn cài đặt cho MongoDB được ghi lại rộng rãi, vì vậy tôi sẽ không lặp lại bất kỳ điều gì ở đây. Nếu bạn muốn làm theo hướng dẫn bắt đầu này, bạn sẽ muốn tải xuống phiên bản phù hợp của MongoDB và giải nén/cài đặt nó. Tại thời điểm viết, phiên bản mới nhất của MongoDB là 2. 6. 3, đó là phiên bản tôi sẽ sử dụng

MongoDB shell version: 2.6.3                           
connecting to: test
> _  

Một lưu ý về bảo mật

> show dbs

Trong một môi trường sản xuất thực tế, tất nhiên bạn sẽ muốn xem xét xác thực. Đây là một cái gì đó mà MongoDB thực sự nghiêm túc và có một phần tài liệu về bảo mật. Nhưng với mục đích của cuộc nói chuyện này, tôi sẽ chọn rằng bạn đã làm công việc đó hoặc bạn đang chạy trong chế độ tin cậy đáng tin cậy của Cameron (tức là bạn đang ở trong môi trường phát triển không mở cửa cho công ty của họ)

> show dbs
admin  (empty)
local  0.078GB

Nhìn xung quanh

Khi bạn đã cài đặt MongoDB và bắt đầu (một quá trình chỉ mất vài phút), bạn có thể kết nối với vỏ MongoDB. Hầu hết các tài liệu kỹ thuật MongoDB đều được viết cho shell, vì vậy, nó luôn hữu ích để biết cách truy cập nó và cách sử dụng nó để giải quyết sự cố hoặc giải pháp nguyên mẫu

Khi bạn kết nối, bạn sẽ thấy một cái gì đó giống như

Vì bạn có thể ở trong bảng điều khiển, hãy Lừa lấy nó cho một vòng quay. Đầu tiên, chúng tôi sẽ xem xét tất cả các cơ sở dữ liệu có ngay bây giờ

Giả sử đây là một cài đặt sạch, không nên xem nhiều

Điều đó thật tuyệt vời, nhưng bạn có thể thấy có rất nhiều tài liệu về cách chơi với MongoDB từ vỏ. Shell là một môi trường thực sự tuyệt vời để thử truy vấn và xem xét mọi thứ từ điểm quan trọng của máy chủ. Tuy nhiên, tôi đã hứa với bạn Java, vì vậy chúng tôi sẽ bước ra khỏi vỏ và tiếp tục kết nối qua Java

compile 'org.mongodb:mongo-java-driver:2.12.3'

Start with Java

Đầu tiên, bạn sẽ muốn thiết lập dự án/IDE của mình để sử dụng trình điều khiển Java MongoDB. Ngày nay, IDE có xu hướng chọn các thuộc tính phụ thuộc thông tin chính thông qua cấu hình Gradle hoặc Maven của bạn, vì vậy tôi sẽ chỉ bao gồm các cấu hình thứ này


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

Tại thời điểm viết bài, phiên bản mới nhất của trình điều khiển Java là 2. 12. 3 - this thing is design to active with line MongoDB 2. 6

Good nghiệp

Bạn cần phải thêm các phần sau vào các thuộc tính của mình trong Build. lớp

maven

Đối với Maven, bạn sẽ muốn

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));

Ngoài ra, nếu bạn thực sự là trường học cũ và thích duy trì sự phụ thuộc của bạn một cách khó khăn, bạn luôn có thể tải xuống tệp jar

Nếu bạn không có dự án mà bạn muốn thử với MongoDB, tôi đã tạo ra một loạt các bài kiểm tra đơn vị trên GitHub mà bạn có thể sử dụng để cảm nhận khi làm việc với MongoDB và Java

________số 8

Connected connection through Java

Giả sử bạn đã giải quyết các thuộc tính của mình và bạn đã thiết lập dự án của mình, bạn đã sẵn sàng kết nối với MongoDB từ ứng dụng Java của bạn

Vì MongoDB là tài liệu cơ sở, bạn không thể ngạc nhiên khi biết rằng bạn không kết nối với nó thông qua các phương pháp DB truyền thống/quan hệ DB truyền thống như JDBC. Nhưng nó rất đơn giản như nhau

The end of the end you know. Bạn muốn ứng dụng của mình tắt các kết nối với MongoDB khi nó chạy hoàn tất. Luôn đảm bảo ứng dụng hoặc máy chủ web bạn gọi

compile 'org.mongodb:mongo-java-driver:2.12.3'
1 khi tắt

Hãy thử kết nối với MongoDB bằng cách kiểm tra trong bài tập1ConnectingTest để vượt qua

Bàn của tôi ở đâu?

MongoDB không có bảng, hàng, cột, tham gia, v. v. Có một số khái niệm mới để học khi bạn sử dụng nó, nhưng không có gì quá khó

Mặc dù bạn vẫn có khái niệm về cơ sở dữ liệu, các tài liệu (mà chúng tôi sẽ trình bày chi tiết hơn sau này) được lưu trữ trong các bộ sưu tập, thay vì cơ sở dữ liệu của bạn được tạo thành từ . Nhưng nó có thể hữu ích khi nghĩ về các tài liệu như hàng và bộ sưu tập như bảng trong cơ sở dữ liệu truyền thống. And collection could have the index as you wish

Select basic and collection

Bạn sẽ muốn xác định cơ sở dữ liệu và bộ sưu tập mà bạn sử dụng trong ứng dụng Java của mình. Nếu bạn nhớ, một vài phần trước đây, chúng tôi đã sử dụng vỏ MongoDB để hiển thị cơ sở dữ liệu trong ví dụ MongoDB của bạn và bạn đã có

compile 'org.mongodb:mongo-java-driver:2.12.3'
2 và
compile 'org.mongodb:mongo-java-driver:2.12.3'
3

Tạo và nhận cơ sở dữ liệu hoặc bộ sưu tập cực kỳ dễ dàng trong MongoDB

> show dbs
0

You can instead

compile 'org.mongodb:mongo-java-driver:2.12.3'
4 bằng bất kỳ tên nào của cơ sở dữ liệu của bạn. Nếu cơ sở dữ liệu không tồn tại, nó sẽ được tạo tự động ngay lần đầu tiên bạn thêm bất kỳ thứ gì vào đó, làm điều đó, không cần kiểm tra null hoặc lý do ngoại lệ xử lý trên cơ sở dữ liệu không tồn tại

Nhận bộ sưu tập bạn muốn từ cơ sở dữ liệu cũng rất đơn giản

> show dbs
2

Một lần nữa, thay thế

compile 'org.mongodb:mongo-java-driver:2.12.3'
5 bằng bất cứ điều gì mà bộ sưu tập của bạn được gọi

Nếu bạn chơi cùng với mã kiểm tra, giờ đây bạn đã biết đủ để có được các bài kiểm tra trong tập tin2MongoclientTest để vượt qua.
trong Exercise2MongoClientTest để vượt qua.

Giới thiệu về các tài liệu

Một điều gì đó, hy vọng, trở nên rõ ràng với bạn khi bạn làm việc thông qua các ví dụ trong blog này, là MongoDB khác với các cơ sở dữ liệu quan hệ truyền thống mà bạn đã sử dụng. Như tôi đã đề cập, có các bộ sưu tập, thay vì bảng và tài liệu, thay vì các hàng và cột

Các tài liệu linh hoạt hơn nhiều so với một hàng truyền thống, bởi vì bạn có một lược đồ năng động hơn là một lược đồ được thi hành. Bạn có thể phát triển tài liệu theo thời gian mà không phải chịu chi phí di chuyển lược đồ và các tập lệnh cập nhật màu nhạt. Nhưng tôi đã vượt lên trước mình

Mặc dù các tài liệu không lồng nhau trông giống như các bảng, cột và hàng mà bạn đã từng sử dụng, nhưng chúng sẽ trông quen thuộc với bạn nếu bạn đã làm bất cứ điều gì thậm chí giống như JSON từ xa. This is a ví dụ

> show dbs
4

Có một số điều thú vị cần lưu ý

  1. Giống như JSON, các tài liệu là cấu trúc của các cặp tên/giá trị và các giá trị có thể là một số trong các loại nguyên thủy, bao gồm các chuỗi và các loại số khác nhau
  2. Nó cũng hỗ trợ các tài liệu lồng nhau - trong ví dụ trên,
    compile 'org.mongodb:mongo-java-driver:2.12.3'
    
    6 là một bộ ảnh con bên trong tài liệu
    compile 'org.mongodb:mongo-java-driver:2.12.3'
    
    7. Không giống như cơ sở dữ liệu quan hệ, nơi bạn có thể lưu trữ điều này trong một bảng riêng và cung cấp một tham chiếu đến nó, trong MongoDB nếu dữ liệu đó có lợi từ công việc luôn được liên kết với cha của nó
  3. You even could save an an array values. Trường sách trong ví dụ trên là một loạt các số nguyên có thể đại diện, ví dụ, ID của những cuốn sách mà người đó đã mua hoặc thuê

Bạn có thể tìm hiểu thêm thông tin chi tiết về tài liệu trong tài liệu

Tạo tài liệu và lưu nó vào cơ sở dữ liệu

Trong Java, nếu bạn muốn tạo một tài liệu như ở trên, bạn sẽ làm một cái gì đó như vậy

> show dbs
0

Tại thời điểm này, rất dễ dàng để lưu nó vào cơ sở dữ liệu của bạn

> show dbs
1

Lưu ý rằng ba dòng đầu tiên được thiết lập và bạn không cần phải khởi động lại những thứ đó mỗi lần

Bây giờ nếu chúng ta nhìn vào bên trong MongoDB, chúng ta có thể thấy rằng cơ sở dữ liệu đã được tạo ra

> show dbs
2

Chúng tôi cũng có thể xem bộ sưu tập cũng được tạo ra

> show dbs
3

Cuối cùng, chúng ta có thể nhìn thấy người của chúng ta, người Jo Jo, đã được thêm vào

> show dbs
4

Là một nhà phát triển Java, bạn có thể thấy những điểm tương đồng giữa tài liệu được lưu trữ trong MongoDB và miền đối tượng của bạn. Trong mã của bạn, người đó có thể sẽ là một người lớp, với các trường nguyên thủy đơn giản, trường mảng và địa chỉ

Vì vậy, thay vì xây dựng

compile 'org.mongodb:mongo-java-driver:2.12.3'
8 của bạn theo cách thủ công như ví dụ trên, bạn có nhiều khả năng sẽ chuyển miền đối tượng của mình thành một DBObject. Tốt nhất là không có lớp DBObject dành riêng cho MongoDB trong các đối tượng tên miền của bạn, vì vậy bạn có thể muốn tạo một PersonAdaptor chuyển đổi đối tượng miền của bạn thành một DBObject.
> show dbs
5

Như trước đây, khi bạn có DBObject, bạn có thể lưu cái này vào MongoDB

> show dbs
6

Bây giờ, bạn đã có tất cả những điều cơ bản để có được các bài kiểm tra trong bài 3InsertTest để vượt qua

Lấy lại tài liệu

Bây giờ bạn đã lưu một người vào cơ sở dữ liệu và chúng tôi đã thấy nó trong cơ sở dữ liệu bằng cách sử dụng vỏ, bạn sẽ muốn đưa nó trở lại trong ứng dụng Java của bạn. Trong bài đăng này, chúng tôi sẽ bao gồm những điều cơ bản về việc truy xuất một tài liệu - trong một bài đăng sau đó, chúng tôi sẽ trình bày các truy vấn phức tạp hơn

Bạn có thể đoán rằng MongoDB là tài liệu cơ sở dữ liệu mà chúng tôi sẽ không sử dụng SQL để truy vấn. Thay vào đó, chúng tôi truy vấn bằng ví dụ, xây dựng một tài liệu trông giống như tài liệu mà chúng tôi đang tìm kiếm. Vì vậy, nếu chúng tôi muốn tìm kiếm người mà chúng tôi đã lưu vào cơ sở dữ liệu, thì Jo Jo Bloggs, chúng tôi nhớ rằng trường

compile 'org.mongodb:mongo-java-driver:2.12.3'
9 có giá trị của Jo Jo, và chúng tôi tạo ra một tài liệu phù hợp với hình dạng này.
> show dbs
7

Như bạn có thể thấy, phương thức


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

0 return a concursor for results. Vì
compile 'org.mongodb:mongo-java-driver:2.12.3'
9 cần phải là duy nhất, chúng tôi biết rằng nếu chúng tôi tìm kiếm một tài liệu với ID này, chúng tôi sẽ chỉ tìm thấy một tài liệu và nó sẽ là tài liệu chúng tôi muốn.
> show dbs
8

Trước đó, chúng tôi đã thấy rằng các tài liệu đơn giản chỉ được tạo thành từ các cặp tên/giá trị, trong đó giá trị có thể là bất cứ thứ gì từ một chuỗi đơn giản hoặc nguyên thủy, cho đến các loại phức tạp. . Do đó, trong Java, chúng ta có thể ít coi DBObject là


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

2. Vì vậy, nếu chúng tôi muốn xem xét các trường của tài liệu mà chúng tôi đã lấy lại từ cơ sở dữ liệu, chúng tôi có thể nhận được chúng với.
> show dbs
9

Lưu ý rằng bạn cần phải chuyển giá trị lên


    
        org.mongodb
        mongo-java-driver
        2.12.3
    

3, because biên dịch biên dịch chỉ biết rằng nó có một

    
        org.mongodb
        mongo-java-driver
        2.12.3
    

4

Nếu bạn vẫn đang chơi cùng với ví dụ mã, thì bây giờ bạn đã sẵn sàng để thực hiện tất cả các bài kiểm tra trong bài tập

Tổng quan về các thư viện JVM

Cho đến nay tôi chỉ cho bạn những điều cơ bản của trình điều khiển Java thức chính thức, nhưng bạn sẽ nhận thấy rằng nó khá thấp-bạn phải thực hiện nhiều thứ ra khỏi các đối tượng miền của mình và đưa chúng vào cấu hình DBObjects . Nếu đây là mức độ kiểm soát mà bạn muốn, thì trình điều khiển Java sẽ làm cho điều này trở nên dễ dàng đối với bạn. Nhưng nếu có vẻ như đây là công việc làm thêm mà bạn không nên làm, thì có rất nhiều lựa chọn khác cho bạn

Các công cụ mà tôi sắp mô tả đều sử dụng trình điều khiển Java MongoDB ở cốt lõi của chúng để tương tác với MongoDB. Họ cung cấp một sự sống còn cao cấp để chuyển đổi các miền đối tượng của bạn thành các tài liệu MongoDB, đồng thời cung cấp cho bạn một cách để đến trình điều khiển cơ cũng như trong trường hợp bạn cần sử dụng nó

Morphia

Morphia là một ODM thực sự nhẹ (Mapper tài liệu đối tượng), vì vậy, nó tương tự như các Orms như Hibernate. Các tài liệu có thể có định dạng khá giống với các đối tượng tên miền Java của bạn, vì vậy ánh xạ này có thể tự động, nhưng Morphia cho phép bạn hướng bản đồ đi đúng hướng.

Morphia là nguồn mở và có những người đóng góp từ MongoDB. Có thể tìm thấy mã mẫu và tài liệu ở đây

Dữ liệu mùa xuân

ODM thường được sử dụng khác là lò xo dữ liệu. Điều này hỗ trợ cơ sở dữ liệu quan hệ và phi quan hệ thống truyền thông, bao gồm MongoDB. Nếu bạn đã sử dụng Spring trong ứng dụng của mình, thì đây sẽ là một cách quen thuộc để làm việc

Như mọi khi với các dự án mùa xuân, có rất nhiều tài liệu thực sự tuyệt vời, bao gồm cả hướng dẫn bắt đầu với mã ví dụ

Mongojack

Nếu bạn đang làm việc với các dịch vụ web hoặc một cái gì đó khác hỗ trợ JSON và bạn đang sử dụng Jackson để làm việc với dữ liệu này, có thể có vẻ là một sự lãng phí. Nhưng Mongojack có thể làm cho công việc của bạn dễ dàng hơn, vì nó được thiết kế để ánh xạ các đối tượng JSON trực tiếp vào MongoDB. Vui lòng xem mã ví dụ và tài liệu

Jongo

Đây là một ODM khác có trụ sở tại Jackson, nhưng cung cấp thêm một điều thú vị dưới dạng truy vấn Hỗ trợ theo cách bạn viết chúng vào vỏ. Tài liệu và ví dụ có sẵn trên trang web

Grails MongoDB Gorm

Khung ứng dụng web Grails cũng hỗ trợ ánh xạ quan hệ đối tượng (GORM) của riêng mình, bao gồm hỗ trợ cho MongoDB. Add document for this plugin may be found at here

Casbah

Đây là một ODM giống như các công cụ khác đã được cập nhật, nhưng người lái xe Scala được hỗ trợ chính thức cho MongoDB. Giống như các thư viện trước đó, nó sử dụng trình điều khiển Java MongoDB bên dưới, nhưng nó cung cấp API Scala cho các nhà phát triển ứng dụng để làm việc. Nếu bạn thích làm việc với Scala nhưng đang tìm kiếm một giải pháp không đồng bộ, hãy xem xét ReactiveMongo, một trình điều khiển được hỗ trợ cộng đồng cung cấp các hoạt động không đồng bộ và không chặn

Các thư viện và công cụ khác

Điều này khác với một danh sách lớn và tôi xin lỗi nếu tôi đã để lại một yêu thích. Nhưng chúng tôi đã tổng hợp một danh sách nhiều thư viện khác nhau cho JVM, bao gồm các dự án cộng đồng và các trình điều khiển chính thức được hỗ trợ

Kết luận

Chúng tôi đã đề cập đến những điều kiện cơ bản của công việc sử dụng MongoDB từ Java - chúng tôi đã chạm vào MongoDB là gì và bạn có thể tìm hiểu nhiều thông tin chi tiết hơn về nó từ hướng dẫn;

Nếu bạn bắt đầu chơi với mã thử nghiệm, bạn có thể tìm thấy nó trong kho GitHub này. Và nếu bạn trở nên tuyệt vời và trông đủ khó khăn, bạn cũng sẽ tìm thấy câu trả lời ở đó

Cuối cùng, có nhiều ví dụ về việc sử dụng trình điều khiển Java trong khi lưu diễn đàn nhanh và có mã ví dụ trong GitHub, bao gồm các ví dụ để xác thực

Nếu bạn muốn tìm hiểu thêm, hãy thử từ khóa học trực tuyến 7 tuần của chúng tôi, phần giới thiệu của MongoDB và Java

Hãy thử nó và hy vọng bạn sẽ thấy việc sử dụng MongoDB từ Java dễ dàng như thế nào

Đọc phần II


Nếu bạn đang tìm kiếm nhiều cách hơn các nguồn lực để học MongoDB, hãy xem bộ bắt đầu của chúng tôi


Bắt đầu với MongoDB Atlas

Chạy MongoDB trong đám mây miễn phí với MongoDB Atlas. Không cần thẻ tín hiệu

Làm thế nào để MongoDB lưu trữ ngày trên Java?

Javamadesoeasy. com (JMSE). .

1. 1) Chèn ngày bằng MongoDB bằng ngày mới ()

1. 2) Chèn ngày trong MongoDB bằng isodate ()

1. 3) Chèn ngày tùy chỉnh/người dùng đã được xác định trong MongoDB bằng ngày mới ()

1. 4) Chèn ngày tùy chỉnh/người dùng đã được xác định trong MongoDB bằng isodate ()

Làm thế nào để chúng ta kết nối với MongoDB?

Làm thế nào để kết nối với MongoDB. .

Tạo cơ sở dữ liệu trên MongoDB. Connected with shell MongoDB. Tạo cơ sở dữ liệu "TestDB". Tạo bộ sưu tập tập tin "user" và thêm nó vào "TestDB"

User setting setting. Connected with quản trị viên DB. Tạo quyền quản trị người dùng.

Tạo kết nối với MongoDB trên CPD. Set device information

Làm thế nào để kết nối MongoDB với Atlas với Java?

Bắt đầu nhanh. .

Giới thiệu

Project design your project

Cài đặt Bộ phát triển Java (JDK)

Create project

Thêm MongoDB làm phụ thuộc

Tạo một cụm từ MongoDB

Thiết lập một cụm từ miễn phí trong Atlas

Truy vấn cụm MongoDB của bạn từ ứng dụng của bạn

JDBC có điều khiển JDBC cho MongoDB không?

Trình điều khiển MongoDB Atlas SQL JDBC cung cấp kết nối SQL cho MongoDB Atlas cho các ứng dụng khách hàng được phát triển trong Java. Xem tài liệu Atlas SQL để biết thêm thông tin. MongoDB Atlas SQL JDBC là trình điều khiển JDBC Type 4 tương thích với JDBC 4 đặc tả. 2