Tra cứu mongodb tham gia bên trong

Vui lòng tìm truy vấn dưới 2 bước, kết hợp UserInfo với Userrole - tạo bộ sưu tập tệp tạm thời mới được sử dụng trong truy vấn cuối cùng để hiển thị dữ liệu kết hợp. Trong truy vấn cuối cùng có một tùy chọn để sử dụng $ out và tạo bộ sưu tập mới với dữ liệu được hợp nhất để sử dụng sau

Create a collection

db.sivaUser.insert(
{    
    "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
        "email" : "",
        "userId" : "AD",
        "userName" : "admin"
})

//"userinfo"
db.sivaUserInfo.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "phone" : "0000000000"
})

//"userrole"
db.sivaUserRole.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "role" : "admin"
})

"Tham gia" tất cả họ. -)

db.sivaUserInfo.aggregate([
    {$lookup:
        {
           from: "sivaUserRole",
           localField: "userId",
           foreignField: "userId",
           as: "userRole"
        }
    },
    {
        $unwind:"$userRole"
    },
    {
        $project:{
            "_id":1,
            "userId" : 1,
            "phone" : 1,
            "role" :"$userRole.role"
        }
    },
    {
        $out:"sivaUserTmp"
    }
])


db.sivaUserTmp.aggregate([
    {$lookup:
        {
           from: "sivaUser",
           localField: "userId",
           foreignField: "userId",
           as: "user"
        }
    },
    {
        $unwind:"$user"
    },
    {
        $project:{
            "_id":1,
            "userId" : 1,
            "phone" : 1,
            "role" :1,
            "email" : "$user.email",
            "userName" : "$user.userName"
        }
    }
])

Có một số cơ sở dữ liệu NoQuery bên ngoài kia, nhưng MongoDB được sử dụng phổ biến nhất và nó có sẵn dưới dạng dịch vụ đám mây và để khai thác trên các hệ thống quản lý tự động. 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 thức 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 . & NBSP;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 thức nối mở rộng, nhưng bạn có thể sử dụng một số toán tử khác để nối hai bộ sưu tập trong 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

lục mục

  • MongoDB là gì?
  • 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 Đường ống & $ Tra cứu?
  • 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 Đường ống & $ Tra cứu?
  • Làm thế nào để MongoDB tham gia hai bộ sưu tập với mệnh đề ĐÂU?
  • Sử dụng la bàn để tham gia hai bộ sưu tập trong MongoDB
  • Những gì bạn có thể làm là kết hợp giữa
    db.sivaUser.insert(
    {    
        "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
            "email" : "",
            "userId" : "AD",
            "userName" : "admin"
    })
    
    //"userinfo"
    db.sivaUserInfo.insert(
    {
        "_id" : ObjectId("56d82612b63f1c31cf906003"),
        "userId" : "AD",
        "phone" : "0000000000"
    })
    
    //"userrole"
    db.sivaUserRole.insert(
    {
        "_id" : ObjectId("56d82612b63f1c31cf906003"),
        "userId" : "AD",
        "role" : "admin"
    })
    
    2 và ___10 trong một bộ sưu tập, ví dụ như ví dụ được cung cấp dựa trên lược đồ DB quan hệ. Mongo là cơ sở dữ liệu NoQuery - và điều này đòi hỏi cách tiếp cận nhau để quản lý tài liệu

MongoDB là gì?

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 Đường ống & $ Tra cứu?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 năm 2009, sử dụng Mô hình cơ sở dữ liệu hướng tài liệu để tổ chức 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ợ cơ chế mới để lưu trữ và truy xuất lượng lớn dữ liệu. MongoDB là một cơ sở dữ liệu đơn giản và dễ cấu hình, cung cấp hiệu suất cao, khả năng mở rộng tự động và tính sẵn sàng cao

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

Sử dụng la bàn để tham gia hai bộ sưu tập trong hàm $lookup (Aggregation) của MongoDB. $lookup(Aggregation) tạo liên kết ngoài cùng bên trái với một tập hợp khác và giúp lọc dữ liệu khỏi dữ liệu đã 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”, hàm $lookup (Tổng hợp) sẽ trả về các tài liệu ở dạng một mảng con của bộ sưu tập gốc

Những gì bạn có thể làm là kết hợp giữa
db.sivaUser.insert(
{    
    "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
        "email" : "",
        "userId" : "AD",
        "userName" : "admin"
})

//"userinfo"
db.sivaUserInfo.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "phone" : "0000000000"
})

//"userrole"
db.sivaUserRole.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "role" : "admin"
})
2 và ___10 trong một bộ sưu tập, ví dụ như ví dụ được cung cấp dựa trên lược đồ DB quan hệ. Mongo là cơ sở dữ liệu NoQuery - và điều này đòi hỏi cách tiếp cận nhau để quản lý tài liệu

Vui lòng tìm truy vấn dưới 2 bước, kết hợp UserInfo với Userrole - tạo bộ sưu tập tệp tạm thời mới được sử dụng trong truy vấn cuối cùng để hiển thị dữ liệu kết hợp. Trong truy vấn cuối cùng có một tùy chọn để sử dụng $ out và tạo bộ sưu tập mới với dữ liệu được hợp nhất để sử dụng sau

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

Create a collection

  • "Tham gia" tất cả họ. -) Nó mô tả bộ sưu tập trong một cơ sở dữ liệu giống hệt nhau sẽ được sử dụng để thực hiện phép nối, nhưng với các hạn chế về bộ sưu tập được phân đoạn
  • Có một số cơ sở dữ liệu NoQuery bên ngoài kia, nhưng MongoDB được sử dụng phổ biến nhất và nó có sẵn dưới dạng dịch vụ đám mây và để khai thác trên các hệ thống quản lý tự động. 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 thức 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 .   . ' Nếu một tài liệu đầu vào không có giá trị cho trường cục bộ, thì toán tử này sẽ cung cấp cho trường giá trị null cho các mục đích phù hợp
  • 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. Trường này chứa dữ liệu từ các tài liệu trong bộ sưu tập 'từ' có thể thực hiện khớp tương đương giữa ForeignField và localField. Khi một tài liệu trong bộ sưu tập 'từ' không có giá trị ForeignField, toán tử này sẽ đặt trường thành null cho các mục đích đối sánh tiếp theo
  • Làm thế nào để tham gia hai bộ sưu tập trong MongoDB? . Hơn thế 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 phổ biến sẽ bị ghi đè nếu tên đã nêu đã tồn tại trong tài liệu đầu vào

Trong SQL, khi hoạt động tham gia được thực hiện, kết quả luôn là một hàng mới kết hợp tất cả các trường có bảng cha mẹ và nước bên ngoài. Tuy nhiên, trong MongoDB, các tài liệu đầu tiên được bổ sung bởi một loạt các tài liệu thu thập gốc

Các bước để tham gia hai bộ sưu tập trong MongoDB

Để thực hiện MongoDB tham gia hai bộ sưu tập, bạn phải sử dụng toán tử tra cứu $. Nó được định nghĩa là một giai đoạn thực hiện tham gia bên ngoài bên trái với một bộ sưu tập khác và hỗ trợ bộ lọc dữ liệu từ các tài liệu được kết nối. toán tử tra cứu $. Nó được định nghĩa là một giai đoạn thực hiện nối ngoài bên trái với một bộ sưu tập khác và hỗ trợ lọc dữ liệu từ các tài liệu đã nối

Ví dụ. nếu người dùng yêu cầu tất cả các lớp từ tất cả học sinh, thì truy vấn dưới đây có thể được viết

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

Từ truy vấn trên, chúng ta có thể thấy tham số ban đầu có tên 'từ' chỉ định bộ sưu tập được kết nối với cái hiện tại và 'LocalField' chỉ định khóa trong bộ sưu tập hiện tại, khớp với khóa chính . Để lấy dữ liệu, student_id từ học sinh và stud_id từ các lớp được kết hợp và tham gia. Ngoài ra, tham số cuối cùng ‘As, was added to the code name is set name to data. 'từ' chỉ định bộ sưu tập sẽ được nối với bộ hiện tại và 'localField' chỉ định khóa trong bộ sưu tập hiện tại, khóa này sẽ được khớp với khóa ngoại trong bộ sưu tập khác bằng tham số 'foreignField'. Để truy xuất dữ liệu, Student_id từ Học sinh và stud_id từ Điểm được khớp và nối. Ngoài ra, tham số kết thúc 'as' được thêm dưới dạng tên mã vào dữ liệu

Điều đáng chú ý là ở đây, trong mỗi bản ghi của dữ liệu đầu ra từ truy vấn ở trên, dữ liệu từ bảng được kết nối cũng xuất hiện dưới dạng phần tử chính trong một mảng. Tương tự, mọi hàng từ dữ liệu đầu ra từ truy vấn trên sẽ hiển thị như sau

________số 8

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à thêm 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 đưa vào địa chỉ bộ sưu tập. 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.sivaUserInfo.aggregate([
    {$lookup:
        {
           from: "sivaUserRole",
           localField: "userId",
           foreignField: "userId",
           as: "userRole"
        }
    },
    {
        $unwind:"$userRole"
    },
    {
        $project:{
            "_id":1,
            "userId" : 1,
            "phone" : 1,
            "role" :"$userRole.role"
        }
    },
    {
        $out:"sivaUserTmp"
    }
])


db.sivaUserTmp.aggregate([
    {$lookup:
        {
           from: "sivaUser",
           localField: "userId",
           foreignField: "userId",
           as: "user"
        }
    },
    {
        $unwind:"$user"
    },
    {
        $project:{
            "_id":1,
            "userId" : 1,
            "phone" : 1,
            "role" :1,
            "email" : "$user.email",
            "userName" : "$user.userName"
        }
    }
])
0

UserInfo file set used with a number of document. bộ sưu tập userInfo đã được phổ biến với một số tài liệu

Điều quan trọng cần lưu ý là tên trường 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. trường name 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

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

db.sivaUser.insert(
{    
    "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
        "email" : "",
        "userId" : "AD",
        "userName" : "admin"
})

//"userinfo"
db.sivaUserInfo.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "phone" : "0000000000"
})

//"userrole"
db.sivaUserRole.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "role" : "admin"
})
0

Chúng tôi đã đối sánh 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ã hó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ó chắc chắn rằng dữ liệu của bạn là 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;bao gồm hơn 40 nguồn Miễn phí) và sẽ cho phép bạn tải trực tiếp dữ liệu từ các nguồn như MongoDB đến Kho dữ liệu hoặc Đích bạn chọ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 được 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 theo thời gian thực và luôn có sẵn dữ liệu để phân tích.  

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 của Hevo

  • Full đủ quản lý. 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. 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
  • 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 mà bạn muốn truyền tải.  . Nó cung cấp một giao diện đơn giản để hoàn thiện, sửa đổi và làm giàu dữ liệu bạn muốn chuyển.  
  • Real time. Hevo cung cấp thời gian chuyển đổi dữ liệu. Vì vậy, dữ liệu của bạn luôn sẵn sàng để phân tích. Hevo cung cấp di chuyển dữ liệu theo 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
  • Lược đồ quản lý. 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 có thể tự động phát hiện lược đồ của dữ liệu đến và ánh xạ nó tới lược đồ đích
  • Connection connection. HEVO hỗ trợ hơn 100 lượt tích hợp cho 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; .   . Hevo hỗ trợ hơn 100 Tích hợp cho nền tảng SaaS FTP/SFTP, Tệp, Cơ sở dữ liệu, công cụ BI và API REST gốc & Trình kết nối Webhooks. Nó hỗ trợ nhiều điểm đến khác nhau bao gồm Google BigQuery, Amazon Redshift, Snowflake, Firebolt, Data Warehouses; .   
  • An toàn. HEVO có kiến ​​trúc chịu lỗi, chắc chắn rằng dữ liệu được xử lý một cách an toàn, nhất quán với việc mất dữ liệu bằng không. 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à không bị mất dữ liệu
  • 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 Rate theo chiều ngang, xử lý hàng triệu hồ sơ mỗi phút với tốc độ rất ít. Khi số lượng nguồn và khối lượng dữ liệu của bạn tăng lên, Hevo sẽ mở rộng quy mô theo chiều ngang, xử lý hàng triệu bản ghi mỗi phút với rất ít độ trễ
  • 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 đường ống dữ liệu. Giám sát nâng cao cung cấp cho bạn chế độ xem một cửa để theo dõi tất cả các hoạt động diễn ra trong Đường ống dữ liệu
  • Direct support support. Nhóm Hevo có sẵn xung 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ợ. Nhóm Hevo luôn sẵn sàng 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ợ

Đăng ký tại đây để dùng thử miễn phí trong 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 Đường ống & $ 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ể có thể yêu cầu biểu thức. được sử dụng với một đường dẫn để 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

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

db.sivaUser.insert(
{    
    "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
        "email" : "",
        "userId" : "AD",
        "userName" : "admin"
})

//"userinfo"
db.sivaUserInfo.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "phone" : "0000000000"
})

//"userrole"
db.sivaUserRole.insert(
{
    "_id" : ObjectId("56d82612b63f1c31cf906003"),
    "userId" : "AD",
    "role" : "admin"
})
1

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 đề ĐÂU?

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. Phương thức tổng hợp () tham gia 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 truy vấn con

Các toán tử đường ống cũng được sử dụng để áp dụng điều kiện. Please look to the example after

Thí dụ

Trong ví dụ này, chúng tôi tạo ra hai bộ sưu tập và sau đó chúng tôi áp dụng mệnh đề Ở ĐÂU để tham gia chúng tôi bằng cách sử dụng tập hợp $ tra cứu. mệnh đề where để nối chúng bằng tập hợp $lookup

Nguồn hình ảnh

Hai bộ sưu tập, đơn đặt hàng và kho được tạo ra và một số 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. đơn đặt hàng và kho được tạo và một số 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 thao tác tổng hợp

Nguồn hình ảnh

Như bạn có thể thấy trong điều kiện định 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 bằng order_item, sau đó thêm stock_data nếu số lượng trong kho lớn hơn order_qty

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

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ẽ nghiên cứu 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 tổng hợp ứng dụng hoạt động bằng cách thực hiện theo các bước sau. Dùng thử miễn phí 14 ngày và tận mắt trải nghiệm bộ Hevo giàu tính năng. Bạn cũng có thể xem giá cạnh tranh nhất sẽ giúp bạn chọn gói phù hợp cho nhu cầu kinh doanh của mình