Mảng lồng nhau của dự án MongoDB
Hôm nay, chúng ta sẽ tìm hiểu cách sử dụng các giai đoạn tổng hợp 4 và 5, vòng lặp 6 và phương pháp 7 để chiếu các trường lồng nhau trong khi truy vấn dữ liệu trong MongoDB Show
Trong MongoDB, chúng tôi có thể truy xuất tất cả các tài liệu bằng phương pháp 8, nhưng nếu chúng tôi chỉ muốn truy cập vào các trường lồng nhau cụ thể thì sao?. Đây là nơi chúng tôi sử dụng phép chiếuChúng ta có thể chiếu các trường lồng nhau theo nhiều cách khác nhau. Sau đây, chúng ta sẽ tìm hiểu về các giải pháp sau để chiếu các trường lồng nhau
Để tìm hiểu các cách tiếp cận trên, hãy tạo một bộ sưu tập có tên 3 chứa một tài liệu. Bạn cũng có thể sử dụng truy vấn dưới đây để liên hệ với chúng tôiMã ví dụ
Sử dụng 4 trên vỏ mongo để xem dữ liệu đã chènSử dụng Giai đoạn tổng hợp // MongoDB version 5.0.8 > var current_location = "posting_locations"; > var project = {}; > project["id"] = "$"+current_location+".city_id"; > project["name"] = "$"+current_location+".city_name"; > project["regions"] = 1; > var find = {}; > find[current_location] = {"$exists":true}; > db.nested.aggregate([ { $match : find }, { $project : project } ]).pretty() 4 để chiếu các trường lồng nhau trong MongoDBMã ví dụ
ĐẦU RA
Ở đây, chúng tôi lưu trường cấp một có tên là 6 trong một biến có tên là 7Sau đó, chúng ta sử dụng biến đó để truy cập vào 8 và 9 và lưu chúng vào đối tượng 0 đồng thời sử dụng ký hiệu ngoặc để tạo thuộc tính cho đối tượng 0. Ngoài ra, chúng tôi lưu trường 2 trong trường 3Tiếp theo, chúng ta có một đối tượng khác có tên là 4 mà chúng ta sẽ sử dụng trong phương thức 5 để khớp với các tài liệu. Trong phương pháp 5, chúng tôi sử dụng giai đoạn 7 để khớp các tài liệu và 4 để chiếu các trường, cho dù được lồng vào nhau hay ở cấp độ đầu tiênChúng tôi sử dụng 4 để chỉ định trường nào chúng tôi muốn hiển thị trong đầu ra. Chúng tôi có thể sử dụng giải pháp sau nếu chúng tôi chỉ quan tâm đến việc chiếu các trường lồng nhau được chỉ định mà không có bất kỳ truy vấn bộ lọc nàoMã ví dụ
ĐẦU RA
Sử dụng // MongoDB version 5.0.8 > var current_location = "posting_locations"; > var project = {}; > project["id"] = "$"+current_location+".city_id"; > project["name"] = "$"+current_location+".city_name"; > project["regions"] = 1; > var find = {}; > find[current_location] = {"$exists":true}; > db.nested.aggregate([ { $match : find }, { $project : project } ]).pretty() 5 Giai đoạn tổng hợp để nhận các trường lồng nhau không bao gồm các trường được chỉ định trong MongoDBMã ví dụ
ĐẦU RA
Ở đây, chúng tôi sử dụng toán tử, dùng để xóa trường hoặc mảng trường đã chỉ định Hãy nhớ rằng chúng tôi sử dụng ký hiệu dấu chấm để chỉ định tài liệu được nhúng hoặc mảng tài liệu. Toán tử 5 không hoạt động nếu trường đã cho không tồn tạiKhi chúng ta sử dụng 3 để so khớp các phần tử của một mảng, toán tử 5 sẽ thay thế các phần tử phù hợp bằng 5 thay vì loại bỏ chúng khỏi mảng. Hành vi này hỗ trợ giữ vị trí phần tử và kích thước mảng nhất quánSử dụng Vòng lặp // MongoDB version 5.0.8 > var current_location = "posting_locations"; > var project = {}; > project["id"] = "$"+current_location+".city_id"; > project["name"] = "$"+current_location+".city_name"; > project["regions"] = 1; > var find = {}; > find[current_location] = {"$exists":true}; > db.nested.aggregate([ { $match : find }, { $project : project } ]).pretty() 6 để lấy các trường lồng nhau trong MongoDBMã ví dụ
Bạn sẽ thấy một cái gì đó tương tự như sau
Tiếp theo, thực hiện lệnh bên dưới trên vỏ mongo của bạn để xem các trường được chiếu
ĐẦU RA 0Để tìm hiểu mã ví dụ này, giả sử chúng ta muốn lấy một số trường lồng nhau nhất định và chèn chúng vào một bộ sưu tập mới. Tại đây, việc chèn các trường đã chuyển đổi dưới dạng tài liệu vào bộ sưu tập mới có thể ảnh hưởng đến hoạt động của chúng tôi dựa trên kích thước của bộ sưu tập lồng nhau Chúng tôi có thể tránh hiệu suất chèn chậm này bằng cách sử dụng API không có thứ tự mới. Nó sẽ hợp lý hóa các thao tác chèn bằng cách gửi hàng loạt và cung cấp cho chúng tôi phản hồi trong thời gian thực về việc thao tác thành công hay thất bại Vì vậy, chúng tôi đang sử dụng API 7 để chèn cấu trúc dữ liệu mong muốn vào bộ sưu tập 9, nơi các tài liệu hoàn toàn mới sẽ được tạo bằng vòng lặp ________0____6 của con trỏ bộ sưu tập 3. Để tạo thuộc tính mới, chúng tôi sử dụng ký hiệu ngoặcĐối với mã này, chúng tôi giả sử có một lượng lớn dữ liệu. Vì vậy, chúng tôi sẽ gửi các thao tác đến một máy chủ theo đợt của 2 để thực hiện thao tác chèn hàng loạtDo đó, nó mang lại cho chúng tôi hiệu suất tốt vì chúng tôi không gửi từng yêu cầu mà chỉ gửi một lần cho mỗi 1000 yêu cầu tới máy chủ Sử dụng Phương pháp // MongoDB version 5.0.8 > var current_location = "posting_locations"; > var project = {}; > project["id"] = "$"+current_location+".city_id"; > project["name"] = "$"+current_location+".city_name"; > project["regions"] = 1; > var find = {}; > find[current_location] = {"$exists":true}; > db.nested.aggregate([ { $match : find }, { $project : project } ]).pretty() 7 để chiếu các trường lồng nhau trong MongoDBMã ví dụ 1Bây giờ, hãy chạy truy vấn sau để xem đầu ra 2ĐẦU RA 3Đối với mã ví dụ này, chúng tôi sử dụng hàm 7 để thực hiện thu nhỏ bản đồ trên tất cả các tài liệu của bộ sưu tập 3. Để làm được điều đó, chúng ta phải tuân theo quy trình ba bước được giải thích ngắn gọn bên dưới
|