Tôi có 3 bộ sưu tập trong MongoDB không thể thay đổi lược đồ của chúng. Một số truy vấn cần truy cập 3 bộ sưu tập Show
Tôi biết rằng tôi cần nhiều truy vấn để thực hiện việc này nhưng tôi không chắc phương pháp hiệu quả nhất để thực hiện việc này là gì. Ví dụ sau đây được đơn giản hóa Dữ liệu của tôi chứa bộ sưu tập "Người dùng" đóng vai trò là cha hợp lý cho hai bộ sưu tập còn lại. Hai bộ sưu tập còn lại là "DVD" và "CD". Một người dùng có thể có nhiều đĩa CD hoặc DVD
Bây giờ, cách tiếp cận tôi hiện đang thực hiện như sau. Nếu tôi muốn lấy lại tất cả đĩa CD và DVD cho người dùng ở Thụy Điển Bước 1
Bước 2
Bước 3
Cách tiếp cận này yêu cầu 2 truy vấn bổ sung và dường như thực sự không hiệu quả đối với tôi. Có một cách hiệu quả hơn để làm điều này? - stackoverflow. comghi bàn. 2 câu trả lời được chấp nhận Bạn có thể thực hiện một số cải tiến về truy vấn như sau
Đồng thời thêm các chỉ mục trên các bộ sưu tập để cải thiện hiệu suất truy vấn Đọc thêmghi bàn. 0 Nó không phải là không hiệu quả như nó có vẻ Rất có thể bạn đang nghĩ đến các kỹ thuật SQL theo đó một tập hợp kết quả được tạo mỗi khi bạn truy vấn và đến lượt nó được lưu vào bộ đệm trên đĩa hoặc trong bộ nhớ MongoDB phát trực tiếp từ các tệp dữ liệu mỗi lô con trỏ, điều đó có nghĩa là dữ liệu của nó "trực tiếp" từ cơ sở dữ liệu không giống như tập kết quả. Điều này cũng có nghĩa là việc ping truy vấn lẻ cũng tốn rất nhiều tài nguyên Như bạn đã nói, một tùy chọn là đưa tất cả người dùng trở lại và mỗi lần lặp lại sẽ đánh giá xem chúng có nên được hiển thị hay không vì chúng có các bản ghi liên quan. Điều này có thể phân phối đồng đều các con trỏ ngừng quá tải, tuy nhiên, vẫn có khả năng quá tải con trỏ trên máy chủ Một tùy chọn khác là lặp lại tất cả người dùng từ Thụy Điển và lấy lại mảng Tuy nhiên, chính xác cách bạn giải quyết vấn đề này tùy thuộc vào kịch bản của bạn và lượng dữ liệu bạn có ghi bàn. 0 Nếu bạn không thể thay đổi lược đồ của mình và bạn muốn biết có bao nhiêu người dùng từ Thụy Điển có CD hoặc DVD, thì tôi nghĩ đây là phương pháp nhỏ nhất
Sau đó, bạn chỉ có 2 truy vấn nhưng nếu bộ sưu tập DVD và CD của bạn đủ lớn thì có lẽ phương pháp này sẽ không nhanh hơn phương pháp của bạn, thậm chí phương pháp này chỉ sử dụng 2 truy vấn Một bộ sưu tập trong MongoDB tương tự như một bảng trong RDBMS. Bộ sưu tập MongoDB không thực thi các lược đồ. Mỗi bộ sưu tập MongoDB có thể có nhiều tài liệu. Tài liệu tương đương với hàng trong bảng trong RDBMS Để tạo một bộ sưu tập, hãy sử dụng lệnh Ở trên, bộ sưu tập 0. Nó trả về một đối tượng 1, cho biết bộ sưu tập đã được tạo thành côngNhư đã đề cập ở trên, một cơ sở dữ liệu có thể có nhiều bộ sưu tập. Sau đây tạo ra nhiều bộ sưu tập Tạo nhiều bộ sưu tậpSử dụng các lệnh 2 để liệt kê tất cả các bộ sưu tập trong cơ sở dữ liệuHiển thị bộ sưu tậpĐể xóa một bộ sưu tập, hãy sử dụng phương thức 3Xóa bộ sưu tậpTạo bộ sưu tập trong MongoDB CompassĐể tạo bộ sưu tập mới bằng MongoDB Compass, hãy kết nối la bàn với máy chủ của bạn và chọn cơ sở dữ liệu Nhấp vào nút "Tạo bộ sưu tập" để tạo bộ sưu tập mới, như hình bên dưới MongoDB Compass - Bộ sưu tậpNhập tên của bộ sưu tập, đánh dấu vào hộp kiểm thích hợp và nhấp vào nút 4 để tạo bộ sưu tập đó
Làm cách nào để tìm nạp dữ liệu từ nhiều 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.
Chúng tôi có thể truy vấn nhiều bộ sưu tập trong MongoDB không?Bạn có thể truy vấn nhiều bộ sưu tập bằng cách sử dụng tổng hợp $lookup . Tôi đã viết một ví dụ ở đây trên diễn đàn. Ngoài ra, Nguồn dữ liệu kết quả truy vấn hoàn toàn có thể kết hợp kết quả từ một số truy vấn MongoDB. Không quan trọng bạn đã sử dụng cơ sở dữ liệu nguồn nào.
Làm cách nào để kết hợp dữ liệu từ nhiều bộ sưu tập thành một bộ sưu tập?Trong MongoDB, chúng ta có thể kết hợp dữ liệu của nhiều bộ sưu tập thành một thông qua giai đoạn tổng hợp $lookup. Trong phần này, bạn phải chỉ định bộ sưu tập nào bạn muốn kết hợp với bộ sưu tập hiện tại và chọn trường khớp với cả hai bộ sưu tập
Làm cách nào để lấy dữ liệu từ hai bộ sưu tập trong cầy mangut?Mongoose - truy vấn để lấy dữ liệu từ nhiều bộ sưu tập . người sử dụng. js var mongoose = require('mongoose'); . Lược đồ; . . bình luận. js var mongoose = require('mongoose'); . Lược đồ; . . bưu kiện. js var mongoose = require('mongoose'); |