MongoDB yêu các nhà phát triển. Và chúng tôi muốn làm cho các kỹ sư phần mềm ở mọi nơi thành công với các ứng dụng xây dựng cho dù đó là một ứng dụng web không có máy chủ, trò chơi di động, tích hợp IoT hoặc bất kỳ ứng dụng nào khác mà bạn có thể tưởng tượng.
Sử dụng MongoDB để lưu trữ dữ liệu của bạn rất dễ dàng với trình điều khiển và thư viện thành ngữ của chúng tôi. Chúng tôi chính thức hỗ trợ 12 ngôn ngữ lập trình; Và chúng tôi cũng có một cộng đồng mạnh mẽ, người đã phát triển các thư viện và trình điều khiển bổ sung để làm việc với gần như mọi ngôn ngữ lập trình tồn tại đến ngày nay. Chúng tôi nắm lấy nhà phát triển Polyglot và nhiều khách hàng của chúng tôi sử dụng MongoDB với nhiều ngôn ngữ lập trình trong cùng một ứng dụng.
MongoDB là cơ sở dữ liệu NoQuery phổ biến nhất và được áp dụng rộng rãi để lưu trữ và quản lý cả dữ liệu có cấu trúc và không cấu trúc. Quản trị viên, nhà phân tích và lập trình viên dữ liệu có thể sử dụng ngôn ngữ lập trình mà họ lựa chọn để tối ưu hóa và quản lý dữ liệu và tạo các ứng dụng hiệu suất cao.
Ngôn ngữ
Sự kết luận
Dưới đây là bản tóm tắt các ngôn ngữ tốt nhất hoạt động với cơ sở dữ liệu NoQuery như MongoDB bằng trình điều khiển gốc:
C | Chơi game, phát triển hệ điều hành, hệ thống nhúng | Libmongoc |
C ++ | Thiết bị IoT, công cụ học máy, phát triển trò chơi | Mongocxx |
C# | Phát triển ứng dụng web, ứng dụng chơi game | MongoDB C#/. Trình điều khiển mạng |
Đi | Các ứng dụng gốc trên nền tảng đám mây, ứng dụng web phân tán | MongoDB GO Driver |
Java | Phát triển web doanh nghiệp, AI và học tập sâu | Trình điều khiển Java Java Streams Reactive Streams |
Node.js | Phân tích dữ liệu lớn, ứng dụng dữ liệu thời gian thực, chatbots | Trình điều khiển nút MongoDB |
PHP | Phát triển web, Xử lý hình ảnh, Hệ thống CMS | Trình điều khiển PHP MongoDB |
Python | Cào web, IoT, AI | Pymongo |
Ruby | Ứng dụng Thương mại điện tử, mạng xã hội | MongoDB Ruby Driver |
Rỉ sét | Hệ điều hành, Dịch vụ trực tuyến phân tán | MongoDB Rust Driver |
Scala | Đường ống dữ liệu, xử lý dữ liệu, xử lý thông tin thời gian thực | Trình điều khiển Scala MongoDB |
Nhanh | Khả năng ngoại tuyến, ứng dụng di động | MongoDB Swift Driver |
Câu hỏi thường gặp
MongoDB sử dụng ngôn ngữ nào?
MongoDB có phải là ngôn ngữ lập trình không?
MongoDB có tốt hơn SQL không?
MongoDB có dễ học không?
SQL [Ngôn ngữ truy vấn có cấu trúc] được thiết kế để quản lý dữ liệu được giữ trong Hệ thống quản lý cơ sở dữ liệu quan hệ [RDBMS]. Đối tác của nó, NoQuery, đề cập đến không phải là SQL, để quản lý cơ sở dữ liệu phi quan hệ. Các biến thể NoQuery như MongoDB đã phát triển nhanh chóng khi các doanh nghiệp bắt đầu dựa vào sự kết hợp của dữ liệu có cấu trúc và không cấu trúc cho trí thông minh kinh doanh.
Là một chuyên gia cơ sở dữ liệu, bạn có thể thực hiện chuyển đổi sang NoQuery như ngôn ngữ truy vấn MongoDB [MQL] không? Một cách tự nhiên. Mặc dù cú pháp và ngữ nghĩa có thể khác nhau rất nhiều, nhưng truy vấn với NoQuery dựa trên các khái niệm tương tự như truy vấn với SQL.
Trong bài đăng này, tôi sẽ đề cập đến một số điều cơ bản khi làm việc với ngôn ngữ truy vấn MongoDB.
Các ví dụ dữ liệu có cấu trúc và phi cấu trúc
Sự khác biệt giữa dữ liệu có cấu trúc và không cấu trúc là một điểm khởi hành hữu ích. Dữ liệu có cấu trúc theo mô hình hoặc lược đồ được xác định rõ. Dữ liệu phi cấu trúc không được tổ chức theo bất kỳ mô hình được xác định trước. Hãy nghĩ về dữ liệu có cấu trúc theo các thuật ngữ định lượng và nghĩ về dữ liệu phi cấu trúc theo thuật ngữ định tính.
Các yếu tố trong một luồng dữ liệu có cấu trúc phù hợp với các trường hoặc cột được xác định rõ; Ví dụ:
- Tên
- Địa chỉ nhà
- Số tài khoản
- Số lượng đơn đặt hàng
- Giá bán
- Số hàng tồn kho
Bạn có thể có các nhãn đó ở hàng trên cùng của bảng tính và biết rằng tất cả các mục trong mỗi cột sẽ phù hợp với nhãn. Bạn có thể truy vấn và phân tích dữ liệu một cách dễ dàng vì luồng được xác định rất rõ.
Trong một luồng dữ liệu phi cấu trúc, mặt khác, các phần tử không phù hợp với các trường hoặc cột. Ví dụ về dữ liệu phi cấu trúc bao gồm sau:
- Đoạn ghi hình
- Hoạt động thiết bị di động
- Sử dụng phương tiện truyền thông xã hội
- Tài liệu văn bản
- Hình ảnh
Chẳng hạn, không có định nghĩa cho năm giây đầu tiên của bất kỳ video clip hoặc bài hát phổ biến nào. Đó là lý do tại sao bạn không bao giờ có thể chắc chắn những gì bạn sẽ thấy và nghe nếu bạn sử dụng các công cụ truyền thống để truy vấn cho nó. Tương tự, không có cấu trúc xác định cho các nguồn cấp dữ liệu truyền thông xã hội, trong đó mọi người viết tự do và sử dụng ngôn ngữ không thể đoán trước. Điều đó gây khó khăn cho việc sử dụng các công cụ thông thường để tìm kiếm các đánh giá sản phẩm thuận lợi và không thuận lợi.
Nguồn gốc của ngôn ngữ truy vấn MongoDB
Những người tạo ra MongoDB đã phát triển một công cụ lưu trữ dữ liệu với nền tảng động, có thể mở rộng và đàn hồi phù hợp với dữ liệu phi cấu trúc. Năm 2009, họ đã phát hành sản phẩm NoQuery theo Thỏa thuận cấp phép nguồn mở cùng với giấy phép doanh nghiệp thương mại.
MongoDB là cơ sở dữ liệu tài liệu theo định hướng JSON [ký hiệu đối tượng JavaScript], mặc dù bên trong nó sử dụng biến thể được mã hóa nhị phân của JSON được gọi là BSON. BSON là một định dạng mã hóa tuần tự cho JSON được sử dụng chủ yếu để lưu trữ và truy cập tài liệu. So với JSON, định dạng BSON cung cấp chi phí phân tích thấp hơn và hỗ trợ phong phú hơn cho các loại dữ liệu như ngày và dữ liệu nhị phân.
Cơ sở dữ liệu quan hệ bao gồm SQL Server, Oracle và MySQL sử dụng SQL để truy cập dữ liệu. Các nhà phát triển MongoDB sử dụng ngôn ngữ truy vấn MongoDB.
SQL so với MongoDB
Bảng dưới đây liệt kê những khác biệt và điểm tương đồng chính giữa SQL và MongoDB.
Cơ sở dữ liệu quan hệ [SQL] | Cơ sở dữ liệu phi quan hệ [NoQuery] |
SQL là cho các hệ thống quản lý cơ sở dữ liệu quan hệ. Cửa hàng dữ liệu ở định dạng có cấu trúc. | NoQuery là cơ sở dữ liệu tài liệu trong đó dữ liệu được biểu diễn trong tài liệu. Cơ sở dữ liệu lưu trữ và truy xuất các tài liệu, có thể là XML, JSON, BSON, v.v. Các tài liệu này là các cấu trúc tự mô tả, phân cấp, dữ liệu cây bao gồm các bản đồ, bộ sưu tập và giá trị vô hướng. Các tài liệu được lưu trữ tương tự nhau nhưng không giống nhau. |
Để truy vấn dữ liệu có cấu trúc | Để truy vấn dữ liệu không cấu trúc |
SQL [Ngôn ngữ truy vấn có cấu trúc] | MQL [Ngôn ngữ truy vấn MongoDB] |
Bàn | Bộ sưu tập |
Hàng hoặc tuple | BSON hoặc các tài liệu khác |
Cột [thuộc tính] | Đồng ruộng |
Mục lục | Mục lục |
Khóa chính có thể được làm bằng một khóa duy nhất hoặc kết hợp các cột | Khóa chính là trường [_id] của tài liệu |
Quá trình tổng hợp là một giao dịch [nhóm theo] được nhóm. | Tổng hợp là một giao dịch đường ống. Quá trình này tốt cho các ứng dụng có nhu cầu xử lý dữ liệu thấp; Ngoài ra, nó trở nên tẻ nhạt hơn và khung tổng hợp trở nên khó gỡ lỗi. |
Mối quan hệ cơ sở dữ liệu SQL được xác định trên các bảng khác nhau bằng các khóa nước ngoài và chính. Nó là đơn giản để thiết lập một sự kết hợp giữa các bảng. | Ngôn ngữ truy vấn MongoDB không hỗ trợ thiết lập tham gia như trong SQL; Tuy nhiên, điều này có thể đạt được bằng cách sử dụng các tài liệu nhúng. |
Các phiên bản sau hoặc mới hơn hỗ trợ truy vấn của các giá trị JSON. Ví dụ: SQL Server 2016 và Oracle 11g Truy vấn hỗ trợ JSON trở đi. | Hỗ trợ tích hợp cho JSON |
Hỗ trợ kích hoạt | Không hỗ trợ các yếu tố kích hoạt |
Các giao dịch truy vấn tuân thủ tính chất axit. | Các giao dịch truy vấn tuân thủ Định lý CAP. |
Hoạt động dữ liệu được xử lý và quản lý bởi SQL. | Dữ liệu xâm nhập và đi ra rất đơn giản trong MongoDB. Bạn có thể sử dụng Java, Python, JavaScript, v.v., để xây dựng, thao tác và phân tích các biểu thức truy vấn. Trong thực tế, không có trình phân tích cú pháp là cần thiết. |
SQL được phát triển đầy đủ và giàu tính năng. | Truy vấn MongoDB vẫn còn hạn chế, đặc biệt là so với các tính năng phong phú của SQL. |
Không hỗ trợ cho tỷ lệ ngang | Tỷ lệ ngang bằng cách sử dụng khóa phân vùng |
Truy vấn MongoDB dựa trên JavaScript. Ngôn ngữ này rất dễ học & nbsp; và nhiều công cụ có sẵn để truy vấn dữ liệu MongoDB & nbsp; sử dụng cú pháp SQL.
Khi dữ liệu truy vấn, bạn có một loạt các tùy chọn, toán tử, biểu thức và bộ lọc. Bảng sau đây liệt kê nhiều lệnh và tùy chọn thường được sử dụng mà bạn có thể chạy trong vỏ MongoDB để thao tác và truy vấn dữ liệu.
Dưới đây là một số ví dụ về mã cho các truy vấn, với ngôn ngữ truy vấn MongoDB và tương đương SQL nếu có.
Lựa chọn thực địa | & Nbsp; find [] & nbsp; chức năng trong ngôn ngữ truy vấn MongoDB cung cấp cách dễ nhất để truy xuất dữ liệu từ nhiều tài liệu trong một trong các bộ sưu tập của bạn. Chức năng này là một hàm mà bạn sẽ sử dụng thường xuyên. | > ________ 1 | > ________ 2 |
Điều kiện điều kiện: Điều khoản ở đâu | Tại đây, để trả lại tất cả các nhân viên A-Status | >db.Employee.find [ { status : "A" } ] | > ________ 4 |
Dự đoán: Chọn các trường cụ thể | Việc chèn thẻ & nbsp; {name: 1} & nbsp; chỉ định rằng chỉ có thông tin từ trường tên nên được trả về. Các kết quả được sắp xếp và trình bày theo thứ tự tăng dần. | >db.Employee.find [ {status : "A"}, {NAME: 1} ]; | > ________ 6 |
Loại trừ trường | Để truy vấn cho điều ngược lại, chèn & nbsp; {name: 0} & nbsp; lấy một danh sách tất cả các trường ngoại trừ trường tên. | > ________ 7 | > ________ 8 |
Hoạt động phức tạp [ký hiệu dấu chấm] | Khi bạn làm việc với các cấu trúc tài liệu phức tạp hơn như tài liệu có chứa mảng hoặc các đối tượng nhúng, bạn có thể sử dụng các phương thức khác để truy vấn từ chúng. | > ________ 9 | > ________ 10 |
Chèn nhiều tài liệu | Để tạo một mảng các tài liệu, hãy xác định biến bằng một tên và gán cho mảng tài liệu. | > ________ 11 | > ________ 12 |
Chèn tài liệu lồng nhau | Ở đây, tài liệu địa chỉ được nhúng trong tài liệu. Ngôn ngữ truy vấn MongoDB có sức chứa điều đó, nhưng SQL tuân thủ nghiêm ngặt các cấu trúc thủ tục và không cho phép chèn các giá trị vào các trường không tồn tại. | > ________ 13 | db.Employee.find[] 4 |
Nhận trạng thái khác biệt | Chỉ trả về các giá trị duy nhất | > ________ 15 | db.Employee.find[] 6 |
Loại | Ví dụ này sắp xếp các kết quả dựa trên khóa tuổi theo thứ tự tăng dần. Sắp xếp theo thứ tự tăng dần trừ khi có quy định khác [-1 cờ cho thứ tự giảm dần]. | > ________ 17 | > ________ 18 |
Giới hạn | Sử dụng & nbsp; giới hạn [] & nbsp; hàm trong ngôn ngữ truy vấn mongoDB để chỉ định số lượng kết quả tối đa mong muốn. | > ________ 19 | > ________ 20 |
Nhảy | Để bỏ qua các tài liệu N đầu tiên trong một bộ sưu tập. Ở đây, n = 5. | > ________ 21 | > ________ 22 |
Tổng hợp | Count [] & nbsp; Trả về số lượng tài liệu trong bộ sưu tập được chỉ định. | > ________ 23 | > ________ 24 |
Tập đoàn | nhóm [] & nbsp; lấy ba tham số: khóa, ban đầu và giảm. Mục đích của & nbsp; group [] & nbsp; và sql, & nbsp; nhóm by & nbsp; là trả lại một loạt các mục được nhóm. | > ________ 25 | > ________ 26 |
So sánh | Sử dụng các tham số đặc biệt & nbsp; $ gt, $ lt, $ gte & nbsp; và & nbsp; $ lte & nbsp; để thực hiện các so sánh lớn hơn và ít hơn trong các truy vấn. | > ________ 27 | > ________ 28 |
Nhiều biểu thức trong tài liệu | Sử dụng & nbsp; $ hoặc & nbsp; để tìm kiếm nhiều biểu thức trong một truy vấn duy nhất. | > ________ 29 | > ________ 30 |
Thêm các trường vào tài liệu | Sử dụng & nbsp; $ addtoset & nbsp; để thêm dữ liệu vào một mảng. | > ________ 31 | db.Employee.find[] 4 |
Dữ liệu mẫu
Dưới đây là đầu ra mẫu trong ngôn ngữ truy vấn MongoDB.
> db.Employee.find[].pretty[].limit[5]
{
"_id" : ObjectId["5e1503646c7b5d31e73b40c4"], "name" : "Ahmed", "age" : 1, "status" : "B"
}
{
"_id" : ObjectId["5e1503646c7b5d31e73b40c5"], "name" : "Bikram", "age" : 10, "status" : "C"
}
{
"_id" : ObjectId["5e1503646c7b5d31e73b40c6"], "name" : "Carlos", "age" : 33, "status" : "A"
}
{
"_id" : ObjectId["5e1503646c7b5d31e73b40c7"], "name" : "Davida", "age" : 32, "status" : "E"
}
{
"_id" : ObjectId["5f287f4007ab6ba4d8c601be"], "name" : "Etty", "age" : "35", "status" : "A"
}
>
Các truy vấn MongoDB có chạy nhanh hơn các truy vấn RDBMS không?
NoQuery và RDBM được thiết kế để hỗ trợ các yêu cầu ứng dụng khác nhau. Nhiều doanh nghiệp sử dụng chúng cạnh nhau.
Trong mô hình tài liệu của MongoDB, dữ liệu liên quan được lưu trữ cùng nhau. Trong khi một RDBM sẽ yêu cầu tham gia phức tạp để truy xuất dữ liệu trên nhiều bảng, thì việc truy xuất dữ liệu trong một tài liệu thường nhanh hơn. Tuy nhiên, tổng thể & NBSP; Hiệu suất cơ sở dữ liệu - MongoDB & NBSP; hoặc nói cách khác - phụ thuộc vào các yếu tố đa dạng như thiết kế cơ sở dữ liệu, tốc độ dữ liệu, loại giao dịch, khối lượng dữ liệu, mẫu truy vấn và thời gian tải.