Tra cứu MongoDB
Và tôi muốn tìm doanh số bán hàng nơi id này xuất hiện, vì vậy tôi tra cứu cùng một bộ sưu tập, thêm giai đoạn này vào quy trình bán hàng Show
Tôi cần sử dụng phiên bản tra cứu này (phiên bản có 0/ 1) vì tôi cần thêm các bộ lọc bổ sung trong giai đoạn 2 của quy trình. Tuy nhiên, phần này Hướng dẫn tra cứu $ MongoDB này là phần đầu tiên trong ví dụ về truy vấn tổng hợp gồm ba phần sử dụng các giai đoạn Giai đoạn quy trình tổng hợp Tài liệu đầu ra từ bộ sưu tập tra cứu được thêm dưới dạng tài liệu nhúng trong bộ sưu tập đầu vào Trong hướng dẫn này, chúng tôi sẽ sử dụng bộ dữ liệu Tiếp theo, nhập hai bộ dữ liệu theo các hướng dẫn này và đảm bảo rằng chúng nằm trên cùng một cơ sở dữ liệu Chúng tôi sẽ sử dụng một ví dụ về đối sánh bình đẳng để minh họa giai đoạn (Trong trường hợp của chúng tôi, đây là trường db.getCollection("insert-database-name-here").aggregate( [ { "$lookup" : { from: "name of lookup collection", localField: "field in the input collection", foreignField: "field in the lookup collection", as: "field name for the output documents" } } ] );0 được tìm thấy trong customers và trường db.getCollection("insert-database-name-here").aggregate( [ { "$lookup" : { from: "name of lookup collection", localField: "field in the input collection", foreignField: "field in the lookup collection", as: "field name for the output documents" } } ] );2 trong housing . )Chúng tôi muốn hiển thị các tùy chọn nhà ở giá cả phải chăng trong bộ dữ liệu db.getCollection("insert-database-name-here").aggregate( [ { "$lookup" : { from: "name of lookup collection", localField: "field in the input collection", foreignField: "field in the lookup collection", as: "field name for the output documents" } } ] );5, nơi có mã zip khớp Một đường ống tổng hợp có nghĩa là có nhiều giai đoạn Nếu bạn đang xây dựng các truy vấn tổng hợp nhiều giai đoạn, phức tạp hơn, chúng tôi khuyên bạn nên sử dụng Trình chỉnh sửa tổng hợp. Nó cho phép bạn xây dựng các truy vấn theo từng giai đoạn, kiểm tra đầu vào và đầu ra, thêm, di chuyển hoặc xóa các giai đoạn khi bạn thực hiện và xem truy vấn của bạn trong mã shell mongo đầy đủ Nhận Trình chỉnh sửa tổng hợp bằng cách tải xuống phiên bản Studio 3T mới nhất tại đây Trong ví dụ của chúng tôi, bộ sưu tập đầu vào là Nhấp vào biểu tượng dấu cộng màu xanh lục trên thanh công cụ hoặc thêm liên kết giai đoạn mới trong Quy trình quy trình Thao tác này sẽ mở một tab có tên Giai đoạn 1 Nhập lệnh của bạn vào phần Trình chỉnh sửa sân khấu, theo cú pháp được mô tả Giai đoạn 1 với MongoDB { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" }
Thực hiện truy vấn bằng cách nhấp vào nút phát (Thực hiện toàn bộ đường dẫn) trên thanh công cụ Để kiểm tra trực quan nhanh, cách tốt nhất là sử dụng Table View Nhấp vào bất kỳ đâu trên tab Kết quả và chọn Hiển thị tất cả các trường được nhúng. Điều này mở rộng tất cả các trường được nhúng của db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } } ] );2 trong cùng một chế độ xem Bạn sẽ thấy lĩnh vực mới của chúng tôi, db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } } ] );3 Nhớ. Chúng tôi chỉ có thông tin nhà ở giá cả phải chăng cho mã vùng Chicago, vì vậy không phải khách hàng nào cũng có giá trị cho trường mới này Nhấp vào tiêu đề cột để sắp xếp kết quả hiển thị theo thứ tự giảm dần Cuộn sang bên trái và bạn sẽ thấy Maria Kelly là kết quả đầu tiên, với 2 yếu tố Nhấp chuột phải vào mục nhập và chọn Tài liệu > Xem tài liệu (JSON) Bạn sẽ thấy hai lựa chọn nhà ở hợp túi tiền được lồng trong trường db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } } ] );4 Trình chỉnh sửa tổng hợp cung cấp giao diện thuận tiện hơn để tạo truy vấn, nhưng bạn luôn có thể xem toàn bộ mã shell mongo tại bất kỳ điểm nào trong quy trình Nhấp vào tab Mã truy vấn và chọn vỏ mongo Thao tác này sẽ hiển thị cho bạn truy vấn MongoDB đầy đủ mà bạn cũng có thể chạy trong IntelliShell, mongo shell tích hợp sẵn của Studio 3T Nhấp vào nút Mở trong IntelliShell Thao tác này trực tiếp mở truy vấn trong tab IntelliShell riêng biệt Nếu bạn là người chuyên nghiệp trong việc viết các truy vấn MongoDB, thì cũng có một cách khó (hơn) để xây dựng các truy vấn tổng hợp. bằng cách viết thủ công chúng trong trình bao Trong trường hợp bạn chưa có, hãy tải xuống bộ dữ liệu Nếu bạn đang chạy một truy vấn tổng hợp sử dụng MongoDB db.getCollection("insert-database-name-here").aggregate( [ { "$lookup" : { from: "name of lookup collection", localField: "field in the input collection", foreignField: "field in the lookup collection", as: "field name for the output documents" } } ] ); Đảm bảo rằng đó là cơ sở dữ liệu chứa các bộ sưu tập của bạn (trong ví dụ của chúng tôi, db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } } ] );8) Trong phần Trình chỉnh sửa, dán truy vấn tổng hợp Truy vấn của chúng tôi trong trường hợp này là db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } } ] ); Sau đó, nhấp vào Thực thi toàn bộ tập lệnh trên thanh công cụ Điều này sẽ cung cấp cho bạn kết quả tương tự như Như bạn sẽ thấy trong các ví dụ sau, việc viết các truy vấn tổng hợp MongoDB theo cách thủ công có thể khá cồng kềnh. Gỡ lỗi, khi bạn thêm nhiều giai đoạn, sẽ khó khăn hơn nếu không có cách nhanh chóng để kiểm tra đầu vào và đầu ra, đây là một tính năng có sẵn trong Trình chỉnh sửa tổng hợp Tiếp theo, chúng tôi sẽ thêm giai đoạn thứ hai – Tra cứu MongoDB là gì?$lookup thực hiện so khớp bình đẳng trên localField với ForeignField từ các tài liệu của bộ sưu tập from . Nếu một tài liệu đầu vào không chứa localField , thì $lookup coi trường đó có giá trị null cho các mục đích phù hợp.
Làm cách nào để tìm kiếm dữ liệu tra cứu trong MongoDB?Bắt đầu từ v6. 0, giai đoạn tổng hợp $lookup của MongoDB hỗ trợ $search bên trong tùy chọn đường dẫn $lookup. . $lookup để làm như sau. . giai đoạn $limit để giới hạn đầu ra ở 5 kết quả giai đoạn $project để loại trừ các trường được chỉ định trong kết quả Làm cách nào để sử dụng tra cứu và so khớp trong MongoDB?$lookup thực hiện so khớp bình đẳng trên ForeignField với localField từ các tài liệu đầu vào . Nếu một tài liệu trong bộ sưu tập from không chứa ForeignField , thì $lookup coi giá trị là null cho các mục đích phù hợp. Chỉ định tên của trường mảng mới để thêm vào tài liệu đầu vào.
Làm cách nào để tìm dữ liệu từ 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 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 điểm từ tất cả học sinh, thì truy vấn bên dưới có thể được viết. Sinh viên. |