Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?

Có một số cơ sở dữ liệu NoQuery ngoài kia, nhưng MongoDB được sử dụng phổ biến nhất và nó có sẵn cả dưới dạng dịch vụ đám mây và để triển khai trên các hệ thống tự quản lý. Mặc dù MongoDB không phải là RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ) và không cung cấp các phương pháp tham gia rộng rãi, bạn có thể sử dụng một số nhà khai thác khác để tham gia hai bộ sưu tập trong MongoDB. & NBSP;Cloud Service and for Deployment on Self-Managed Systems. Even though MongoDB isn’t an RDBMS (Relational Database Management System) and doesn’t offer extensive join methods, you can use several other operators to join two collections in MongoDB. 

Khi hoàn chỉnh hướng dẫn của bài viết này, bạn sẽ tìm hiểu chi tiết cách MongoDB tham gia hai bộ sưu tập.

Mục lục

  • MongoDB là gì?
  • Làm thế nào để tham gia hai bộ sưu tập trong MongoDB?
  • Các bước để tham gia hai bộ sưu tập trong MongoDB
  • Làm thế nào MongoDB tham gia hai bộ sưu tập với các điều kiện cụ thể bằng Pipeline & $ Tra cứu?
  • Làm thế nào để MongoDB tham gia hai bộ sưu tập với mệnh đề WHERE?
  • Sử dụng la bàn để tham gia hai bộ sưu tập trong MongoDB
  • Sự kết luận

MongoDB là gì?

Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
Làm thế nào để tham gia hai bộ sưu tập trong MongoDB?

Các bước để tham gia hai bộ sưu tập trong MongoDBnon-relational Database Management System that is Open Source and Cross-Platform. MongoDB, which was founded in 2009, employs the Document-Oriented Database Model to organize data into documents and collections rather than tables. This enables it to store various types of data. Furthermore, it is distributed under the Server Side Public License (SSPL), which supports a novel mechanism for storing and retrieving large amounts of data. MongoDB is a straightforward and simple-to-configure database that provides high performance, automatic scalability, and high availability.

Làm thế nào MongoDB tham gia hai bộ sưu tập với các điều kiện cụ thể bằng Pipeline & $ Tra cứu?

Làm thế nào để MongoDB tham gia hai bộ sưu tập với mệnh đề WHERE? $lookup (Aggregation) function. $lookup(Aggregation) creates an outer left join with another collection and helps to filter data from merged data. If documents are part of a “joined” collection, the $lookup (Aggregation) function will return documents in the form of a subarray of the original collection.

Sử dụng la bàn để tham gia hai bộ sưu tập trong MongoDB

Sự kết luận

{
   $lookup:
     {
       from: ,
       localField: ,
       foreignField: ,
       as: 
     }
}

Nguồn hình ảnh

  • MongoDB là một hệ thống quản lý cơ sở dữ liệu phi quan hệ là nguồn mở và đa nền tảng. MongoDB, được thành lập vào năm 2009, sử dụng mô hình cơ sở dữ liệu định hướng tài liệu để sắp xếp dữ liệu thành các tài liệu và bộ sưu tập thay vì bảng. Điều này cho phép nó lưu trữ các loại dữ liệu khác nhau. Hơn nữa, nó được phân phối theo giấy phép công cộng phía máy chủ (SSPL), hỗ trợ một cơ chế mới để lưu trữ và truy xuất một lượng lớn dữ liệu. MongoDB là một cơ sở dữ liệu đơn giản và đơn giản để cấu hình, cung cấp hiệu suất cao, khả năng mở rộng tự động và tính khả dụng cao. It describes the collection within an identical database that should be used for executing the join, but with sharded collection restrictions.
  • MongoDB có một số vấn đề với liên kết dữ liệu từ bộ sưu tập này sang bộ sưu tập khác trừ khi bạn sử dụng các hàm truy vấn tập lệnh đơn giản. Để giải quyết vấn đề này, chúng tôi giới thiệu khái niệm tham gia, tạo điều kiện cho mối quan hệ giữa dữ liệu. This field represents the input field from the documents to the stage of $lookup, which performs an equivalence match between the local-field and the foreign-field from the collection ‘from.’ If an input document does not have a value for a local-field, then this operator will give the field a null value for matching purposes.
  • Chúng ta có thể tham gia các tài liệu trên các bộ sưu tập trong MongoDB bằng cách sử dụng hàm $ Lookup (tập hợp). $ Tra cứu (tập hợp) tạo ra một tham gia bên trái bên trái với một bộ sưu tập khác và giúp lọc dữ liệu từ dữ liệu được hợp nhất. Nếu các tài liệu là một phần của bộ sưu tập tham gia của người Viking, hàm $ Tra cứu (tập hợp) sẽ trả về các tài liệu dưới dạng một SubArray của bộ sưu tập gốc. This field contains data from the documents in the ‘from’ collection with which an equivalence match can be made between the foreignField and the localField. When a document in the collection ‘from’ does not have a foreignField value, this operator will set the field to null for further matching purposes.
  • Cú pháp It specifies the name of the array field that needs to be added to the input documents. More so, a new array field also includes matching documents from the collection ‘from.’ The prevailing field will be overwritten if the stated name already exists in the input document.

Trong thao tác tham gia MongoDB, mục tiêu là kết nối một bộ dữ liệu với một bộ dữ liệu khác. Để tham gia hai bộ sưu tập, chúng tôi sử dụng toán tử tra cứu $, có cú pháp được xác định dưới đây:

Chức năng tra cứu $ chấp nhận một tài liệu chứa các trường này:

Từ: Nó mô tả bộ sưu tập trong một cơ sở dữ liệu giống hệt nhau nên được sử dụng để thực hiện tham gia, nhưng với các hạn chế thu thập Sharded. $lookup operator. It is defined as a stage that executes a left outer join with another collection and aids in filtering data from joined documents.

LocalField: Trường này đại diện cho trường đầu vào từ các tài liệu đến giai đoạn tra cứu $ Một trường địa phương, sau đó toán tử này sẽ cung cấp cho trường một giá trị null cho các mục đích phù hợp.

Students.aggregate([{
$lookup: {
From: ‘Grades’,
LocalField: ‘Student_id’,
foreignField: ‘Stud_id’,
as: ‘Student_grade’
}}]);

Trường nước ngoài: Trường này chứa dữ liệu từ các tài liệu trong bộ sưu tập ‘từ bộ sưu tập mà một trận đấu tương đương có thể được thực hiện giữa Trường nước ngoài và Localfield. Khi một tài liệu trong bộ sưu tập ‘từ Hồi không có giá trị nước ngoài, nhà điều hành này sẽ đặt trường thành NULL cho các mục đích phù hợp hơn nữa.‘from’ specifies the collection which is to be joined with the present one, and the ‘localField’ specifies the key in the current collection, which is to be matched with the foreign key in another collection by the ‘foreignField’ parameter. For retrieving the data, Student_id from Students and stud_id from Grades are matched and joined. In addition, the end parameter ‘as’ is added as a code-named to the data.

AS: Nó chỉ định tên của trường mảng cần được thêm vào các tài liệu đầu vào. Hơn nữa, một trường mảng mới cũng bao gồm các tài liệu phù hợp từ bộ sưu tập từ. Trường trường phổ biến sẽ được ghi đè nếu tên đã nêu đã tồn tại trong tài liệu đầu vào.

{_ID: String, Quantity: Number, Student_id: String, Student_grade: Array, Stud_id: String, Student_name: String}

Dữ liệu được tham gia bởi truy vấn sẽ là yếu tố đầu tiên trong mảng điểm.

Thí dụ

Ví dụ sau đây tạo ra một bộ dữ liệu mẫu và chèn một số tài liệu để thực hiện MongoDB tham gia hai bộ sưu tập:

db.address.insertMany(
    [
        {
            "name": "Bob",
            "blk_no": 22,
            "street" : "dewey street",
            "city" : "United States of America"
        },
        {
            "name": "Jack",
            "blk_no": 25,
            "street" : "gordon street",
            "city" : "New Zealand"
        }
    ]
);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("613594cdb59313217373673c"),
                ObjectId("613594cdb59313217373673d")
        ]
}

Một vài tài liệu đã được chèn vào bộ sưu tập địa chỉ. Bây giờ, hãy để thêm một vài tài liệu vào một bộ sưu tập khác:

db.userInfo.insertMany(
    [
        {
            "contact_name": "Bob",
            "age": 27,
            "sex" : "male",
            "citizenship" : "Filipino"
        },
        {
            "contact_name": "Jack",
            "age": 22,
            "sex" : "male",
            "citizenship" : "Filipino"
        }
    ]
);
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("613594dbb59313217373673e"),
                ObjectId("613594dbb59313217373673f")
        ]
}

Bộ sưu tập UserInfo được điền với một số tài liệu.userInfo collection was populated with some documents.

Điều quan trọng cần lưu ý là trường tên trong bộ sưu tập địa chỉ có cùng giá trị với trường contact_name trong bộ sưu tập userInfo. name field in the address collection has the same values as the contact_name field in the userInfo collection.

Áp dụng chức năng Tra cứu $, chúng tôi tìm thấy một trận đấu bình đẳng như sau:

098db.userInfo.aggregate([
    { $lookup:
        {
           from: "address",
           localField: "contact_name",
           foreignField: "name",
           as: "address"
        }
    }
]).pretty();
Output:
{
        "_id" : ObjectId("613594dbb59313217373673e"),
        "contact_name" : "Bob",
        "age" : 27,
        "sex" : "male",
        "citizenship" : "Filipino",
        "address" : [
                {
                        "_id" : ObjectId("613594cdb59313217373673c"),
                        "name" : "Bob",
                        "blk_no" : 22,
                        "street" : "dewey street",
                        "city" : "United States of America"
                }
        ]
}
{
        "_id" : ObjectId("613594dbb59313217373673f"),
        "contact_name" : "Jack",
        "age" : 22,
        "sex" : "male",
        "citizenship" : "Filipino",
        "address" : [
                {
                        "_id" : ObjectId("613594cdb59313217373673d"),
                        "name" : "Jack",
                        "blk_no" : 25,
                        "street" : "gordon street",
                        "city" : "New Zealand"
                }
        ]
}

Chúng tôi đã khớp trường tên và trường contact_name của hai bộ sưu tập này. Sau đó, bạn có thể thấy đầu ra nơi chúng tôi tham gia hai bộ sưu tập. Đây là cách đơn giản nhất để thực hiện MongoDB tham gia hai bộ sưu tập từ cùng một cơ sở dữ liệu.

Dữ liệu HEVO là một đường ống dữ liệu không mã của sự lựa chọn của bạn. Nó sẽ tự động hóa luồng dữ liệu của bạn trong vài phút mà không cần viết bất kỳ dòng mã nào. Kiến trúc chịu lỗi của nó đảm bảo rằng dữ liệu của bạn an toàn và nhất quán. HEVO cung cấp cho bạn một giải pháp thực sự hiệu quả và hoàn toàn tự động để quản lý dữ liệu trong thời gian thực và luôn có dữ liệu sẵn sàng phân tích. & NBSP;including 40+ Free sources) and will let you directly load data from sources like MongoDB to a Data Warehouse or the Destination of your choice. It will automate your data flow in minutes without writing any line of code. Its fault-tolerant architecture makes sure that your data is secure and consistent. Hevo provides you with a truly efficient and fully automated solution to manage data in real-time and always have analysis-ready data. 

Bắt đầu với Hevo miễn phí

Hãy cùng nhìn vào một số tính năng nổi bật của Hevo:

  • Được quản lý đầy đủ: Nó không yêu cầu quản lý và bảo trì vì Hevo là một nền tảng hoàn toàn tự động.: It requires no management and maintenance as Hevo is a fully automated platform.
  • Chuyển đổi dữ liệu: Nó cung cấp một giao diện đơn giản để hoàn thiện, sửa đổi và làm phong phú dữ liệu bạn muốn truyền. & NBSP;: It provides a simple interface to perfect, modify, and enrich the data you want to transfer. 
  • Thời gian thực: Hevo cung cấp di chuyển dữ liệu thời gian thực. Vì vậy, dữ liệu của bạn luôn sẵn sàng để phân tích.: Hevo offers real-time data migration. So, your data is always ready for analysis.
  • Quản lý lược đồ: HEVO có thể tự động phát hiện lược đồ của dữ liệu đến và ánh xạ nó đến lược đồ đích.: Hevo can automatically detect the schema of the incoming data and maps it to the destination schema.
  • Trình kết nối: HEVO hỗ trợ hơn 100 tích hợp cho các nền tảng SaaS FTP/SFTP, tệp, cơ sở dữ liệu, công cụ BI và đầu nối API & Webhooks gốc. Nó hỗ trợ các điểm đến khác nhau bao gồm Google BigQuery, Amazon Redshift, Snowflake, Firebolt, kho dữ liệu; Amazon S3 Data Lakes; Databricks; và MySQL, SQL Server, Tokudb, MongoDB, PostgreSQL cơ sở dữ liệu để đặt tên cho một số. & nbsp; & nbsp;: Hevo supports 100+ Integrations to SaaS platforms FTP/SFTP, Files, Databases, BI tools, and Native REST API & Webhooks Connectors. It supports various destinations including Google BigQuery, Amazon Redshift, Snowflake, Firebolt, Data Warehouses; Amazon S3 Data Lakes; Databricks; and MySQL, SQL Server, TokuDB, MongoDB, PostgreSQL Databases to name a few.  
  • An toàn: HEVO có kiến ​​trúc chịu lỗi, đảm bảo rằng dữ liệu được xử lý một cách an toàn, nhất quán với mất dữ liệu bằng không.: Hevo has a fault-tolerant architecture that ensures that the data is handled in a secure, consistent manner with zero data loss.
  • HEVO được xây dựng theo tỷ lệ: Khi số lượng nguồn và khối lượng dữ liệu của bạn tăng lên, Hevo tỷ lệ theo chiều ngang, xử lý hàng triệu hồ sơ mỗi phút với độ trễ rất ít.: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Giám sát trực tiếp: Giám sát nâng cao cung cấp cho bạn chế độ xem một cửa để xem tất cả các hoạt động xảy ra trong các đường ống dữ liệu.: Advanced monitoring gives you a one-stop view to watch all the activities that occur within Data Pipelines.
  • Hỗ trợ trực tiếp: Nhóm Hevo có sẵn vòng quanh để mở rộng hỗ trợ đặc biệt cho khách hàng của mình thông qua trò chuyện, email và các cuộc gọi hỗ trợ.: Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.

Đăng ký tại đây để dùng thử miễn phí 14 ngày!

Làm thế nào MongoDB tham gia hai bộ sưu tập với các điều kiện cụ thể bằng Pipeline & $ Tra cứu?

$ Tra cứu được sử dụng với một đường ống để thực hiện MongoDB tham gia hai bộ sưu tập dựa trên các điều kiện cụ thể yêu cầu biểu thức. is used with a pipeline to perform MongoDB join two collections based on specific conditions requiring expressions.

Chẳng hạn, nếu chúng tôi muốn có được tất cả người dùng với các đơn đặt hàng lớn hơn năm

User.aggregate([{
$lookup: {
 from: 'Orders',
 let: {ID: '$ID'},
 pipeline: [{$match: {
  $expr: {
   $eq: [
    '$User_ID', '$$ID'
   ],
   $gt: [
    '$quantity', 5
   ]
  }}}]
  as: 'OrdersData'
}}]);

Chúng tôi có thể nhanh chóng tham gia các bảng bằng các đường ống trong Tra cứu $.

Làm thế nào để MongoDB tham gia hai bộ sưu tập với mệnh đề WHERE?

Phương thức tổng hợp MongoDB () kết hợp hai bộ sưu tập với mệnh đề WHERE. Bằng cách này, chúng ta có thể tương quan hai lần con.aggregate() method joins two collections with a where clause. By doing this, we can correlate two subqueries.

Các toán tử đường ống cũng được sử dụng để áp dụng điều kiện. Hãy cùng nhìn vào ví dụ sau:

Thí dụ

Trong ví dụ này, chúng tôi tạo hai bộ sưu tập và sau đó chúng tôi áp dụng mệnh đề WHERE để tham gia chúng bằng cách sử dụng tập hợp $ tra cứu.where clause to join them using the $lookup aggregation.

Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
Nguồn hình ảnh

Hai bộ sưu tập, đơn đặt hàng và kho được tạo ra và một vài tài liệu được lưu trữ. Bây giờ chúng tôi kết hợp cả hai bộ sưu tập bằng cách sử dụng một hoạt động tổng hợp.orders, and warehouses are created, and a few documents are stored. We now combine both collections using an aggregation operation.

Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
Nguồn hình ảnh

Như bạn có thể thấy trong điều kiện mệnh đề WHERE, chúng tôi sử dụng hàm đường ống, gán stock_item bằng Order_Item, sau đó thêm stock_data nếu số tiền trong kho có ý nghĩa hơn so với order_qty. stock_item equal to order_item, and then add stock_data if the amount in stock is more significant than the order_qty.

Đây là cách đơn giản nhất để áp dụng nơi các điều khoản để thực hiện MongoDB tham gia hai bộ sưu tập. Tuy nhiên, bạn có thể học các cách khác để làm điều này bằng cách thực hành nhiều hơn.

Sử dụng la bàn để tham gia hai bộ sưu tập trong MongoDB

GUI MongoDB La bàn cho phép bạn truy vấn, tổng hợp và phân tích dữ liệu MongoDB của bạn bằng môi trường trực quan. & NBSP; query, aggregate, and analyze your MongoDB data using a visual environment. 

Hàm tổng hợp tra cứu $ được sử dụng để thực hiện MongoDB tham gia hai bộ sưu tập cho cùng một cơ sở dữ liệu.

Thí dụ

Trong ví dụ này, chúng tôi sẽ học cách kết hợp hai bộ sưu tập cơ sở dữ liệu bằng cách sử dụng tổng hợp $ tra cứu.

Trong la bàn, bạn có thể áp dụng hoạt động tổng hợp bằng cách làm theo các bước sau:Compass, you can apply the aggregation operation by following these steps:

  • Mở la bàn MongoDB.
Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
Nguồn hình ảnh
  • Nếu muốn, hãy tạo một bộ sưu tập và cơ sở dữ liệu mới.
Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
  • Chúng tôi đã tạo hai bộ sưu tập cho các chi và phim trong cơ sở dữ liệu thử nghiệm và chúng tôi cũng đã chèn một số tài liệu vào cả hai bộ sưu tập.
    • Bây giờ chúng tôi hợp nhất hai bộ sưu tập bằng hàm tổng hợp.
    • Trên trang tài liệu, nhấp vào Tập hợp.Documents page, click Aggregation.
Hướng dẫn what is the difference between mongodb joins and sql? - sự khác biệt giữa mongodb tham gia và sql là gì?
Nguồn hình ảnh

Nếu muốn, hãy tạo một bộ sưu tập và cơ sở dữ liệu mới.pipeline stage” after you select Aggregation where there’s a dropdown list and where you have to choose which operation to perform; we choose the $lookup function.

Chúng tôi đã tạo hai bộ sưu tập cho các chi và phim trong cơ sở dữ liệu thử nghiệm và chúng tôi cũng đã chèn một số tài liệu vào cả hai bộ sưu tập.

Bây giờ chúng tôi hợp nhất hai bộ sưu tập bằng hàm tổng hợp.

Trên trang tài liệu, nhấp vào Tập hợp.

Có một giai đoạn đường ống của người Viking sau khi bạn chọn tập hợp trong đó có một danh sách thả xuống và nơi bạn phải chọn hoạt động nào để thực hiện; Chúng tôi chọn chức năng tra cứu $.

Một số trường trong bộ sưu tập cần được cung cấp trong chức năng này. Đầu tiên, bạn viết tên bộ sưu tập mà bạn muốn tham gia (phim) vào trường 'từ' và viết các lĩnh vực của bộ sưu tập địa phương (danh sách thể loại) và các lĩnh vực của bộ sưu tập hình thức trên mẫu (loại) trong LocalField và Trường nước ngoài, tương ứng và trong AS Viết trường Mảng đầu ra (Phim).

Bạn có thể thấy đầu ra ở phía bên phải của đầu vào sau khi tổng hợp.

Dưới đây là một cách đơn giản để áp dụng tập hợp tra cứu $ bằng la bàn MongoDB. Với nhiều thực hành hơn, bạn sẽ hiểu rõ hơn về các hoạt động tổng hợp và nắm bắt tốt hơn môi trường la bàn.

Sự kết luậnMongoDB and a wide variety of Desired Destinations, with a few clicks. Hevo Data with its strong integration with 100+ sources (including 40+ free sources) allows you to not only export data from your desired data sources & load it to the destination of your choice, but also transform & enrich your data to make it analysis-ready so that you can focus on your key business needs and perform insightful analysis using BI tools.

Một trong những khác biệt cơ bản giữa cơ sở dữ liệu SQL và NoQuery là toán tử tham gia. Hoạt động tham gia có thể được thực hiện trong cơ sở dữ liệu SQL giữa hai bảng bên trong cùng một cơ sở dữ liệu hoặc khác nhau. Mặt khác, các hoạt động tham gia trong MongoDB có thể được thực hiện giữa các bộ sưu tập được thực hiện trong một cơ sở dữ liệu tương tự, mặc dù trường hợp này rất khác nhau.14-day free trial and experience the feature-rich Hevo suite first hand. You can also have a look at the unbeatable pricing that will help you choose the right plan for your business needs.

Hướng dẫn này đã giới thiệu cho bạn một vài hoạt động thiết yếu nhất để thực hiện MongoDB tham gia hai bộ sưu tập với các ví dụ. & NBSP;

MongoDB khác với SQL như thế nào?

Cơ sở dữ liệu SQL được sử dụng để lưu trữ dữ liệu có cấu trúc trong khi cơ sở dữ liệu NoQuery như MongoDB được sử dụng để lưu dữ liệu không có cấu trúc. MongoDB được sử dụng để lưu dữ liệu phi cấu trúc ở định dạng JSON. MongoDB không hỗ trợ phân tích nâng cao và tham gia như hỗ trợ cơ sở dữ liệu SQL.. MongoDB is used to save unstructured data in JSON format. MongoDB does not support advanced analytics and joins like SQL databases support.

MongoDB có tốt cho tham gia không?

Kết luận là MongoDB tham gia rất giòn (khi mọi thứ thay đổi, các chương trình ứng dụng phải được mã hóa rộng rãi) và thường mang lại hiệu suất rất kém, so với postgres.MongoDB joins are very brittle (when things change, application programs must be extensively recoded), and often MongoDB offers very poor performance, relative to Postgres.

MongoDB tốt hơn SQL như thế nào?

Mặc dù MongoDB linh hoạt hơn và đảm bảo tính khả dụng dữ liệu cao và đa dạng, cơ sở dữ liệu SQL hoạt động với các thuộc tính axit (tính nguyên tử, tính nhất quán, cách ly và độ bền) và đảm bảo độ tin cậy của giao dịch cao hơn.MongoDB is more flexible and ensures high and diverse data availability, a SQL Database operates with the ACID (Atomicity, Consistency, Isolation, and Durability) properties and ensures greater reliability of transactions.

Tại sao chúng ta nên sử dụng MongoDB chứ không phải SQL?

Tại sao sử dụng MongoDB tốt hơn là sử dụng MySQL?Các tổ chức thuộc mọi quy mô đang áp dụng MongoDB, đặc biệt là cơ sở dữ liệu đám mây, bởi vì nó cho phép họ xây dựng các ứng dụng nhanh hơn, xử lý các loại dữ liệu rất đa dạng và quản lý các ứng dụng hiệu quả hơn ở quy mô.it enables them to build applications faster, handle highly diverse data types, and manage applications more efficiently at scale.