Định hình lại luồng tài liệu bằng cách đổi tên, thêm hoặc xóa các trường. Cũng sử dụng để tạo các giá trị hoặc đối tượng phụ được tính toán. Dùng để Show
Sử dụng để chọn nhanh các trường bạn muốn bao gồm hoặc loại trừ khỏi phản hồi. Xem xét hoạt động khung tổng hợp sau đây db.article.aggregate( { $project : { title : 1 , author : 1 , }} ); Thao tác này bao gồm trường tiêu đề và tác giả . 注解 Trường _id luôn được bao gồm theo mặc định. Bạn có thể loại trừ rõ ràng _id như sau. db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }} ); Ở đây, phép chiếu không bao gồm trường _id nhưng bao gồm tiêu đề and author fields. Phép chiếu cũng có thể thêm các trường được tính toán vào luồng tài liệu đi qua đường ống. Một trường được tính toán có thể sử dụng bất kỳ. Xem xét ví dụ sau db.article.aggregate( { $project : { title : 1, doctoredPageViews : { $add:["$pageViews", 10] } }} ); Ở đây, trường doctoredPageViews biểu thị giá trị của pageViews field after adding 10 to the original field using the . 注解 Bạn phải đặt biểu thức xác định trường được tính toán trong dấu ngoặc nhọn để biểu thức là một đối tượng hợp lệ Đây là Giai đoạn 2 của ví dụ về truy vấn tổng hợp ba phần sử dụng các giai đoạn Đôi khi chúng tôi cần dọn dẹp một chút dữ liệu trong bộ sưu tập của mình Tiếp thu từ Giai đoạn 1 – ví dụ về Tài liệu JSON (kỳ tích. dữ liệu chúng tôi không cần) Giai đoạn
Cú pháp { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0, }9 hoặc db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } }, { "$project" : { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0 } } ], { "allowDiskUse" : false } );0 làm giá trị để đưa trường vào phép chiếu của chúng tôi <field> : <1 or true> Bản chất của một quy trình tổng hợp là có nhiều giai đoạn, vì vậy bạn có thể sẽ sử dụng db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } }, { "$project" : { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0 } } ], { "allowDiskUse" : false } );2, db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } }, { "$project" : { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0 } } ], { "allowDiskUse" : false } );3 hoặc $lookup Tải xuống Studio 3T để truy cập Trình chỉnh sửa tổng hợp Để minh họa cách hoạt động của , sau đó hãy thêm một giai đoạn mới bằng cách nhấp vào biểu tượng dấu cộng màu xanh lục. Điều này sẽ mở một tab giai đoạn mới gọi là Giai đoạn 2 Chọn Hãy dán truy vấn { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0, } Nhấp vào nút phát bên dưới Đầu ra giai đoạn để chỉ thực hiện giai đoạn này Hoặc thực hiện toàn bộ quy trình bằng cách nhấp vào nút phát trên thanh công cụ Các đầu ra của đường ống và giai đoạn bây giờ sẽ chỉ hiển thị các trường chúng tôi muốn Để xem các truy vấn tổng hợp trong mã mongo shell, nhấp vào Mã truy vấn và chọn mongo shell từ danh sách thả xuống Sau đó, bạn có thể chạy truy vấn này trực tiếp trong IntelliShell bằng cách nhấp vào nút Mở trong IntelliShell Ngoài ra, bạn có thể dán truy vấn sau vào IntelliShell, truy vấn này sẽ mang lại cho bạn kết quả tương tự db.getCollection("customers").aggregate( [ { "$lookup" : { "from" : "housing", "localField" : "address.zip_code", "foreignField" : "Zip Code", "as" : "address.zip_code.affordable_housing_options" } }, { "$project" : { "first" : 1.0, "last" : 1.0, "address.city" : 1.0, "address.state" : 1.0, "address.zip_code.affordable_housing_options.Property Type" : 1.0, "address.zip_code.affordable_housing_options.Property Name" : 1.0, "address.zip_code.affordable_housing_options.Units" : 1.0, "address.zip_code.affordable_housing_options.Zip Code" : 1.0 } } ], { "allowDiskUse" : false } ); Bây giờ, hãy thêm giai đoạn thứ ba và lưu các tài liệu đầu ra này vào một bộ sưu tập mới bằng cách sử dụng giai đoạn Sự khác biệt giữa $Group và $project trong MongoDB là gì?$group được sử dụng để nhóm các tài liệu đầu vào theo biểu thức _id đã chỉ định và đối với mỗi nhóm riêng biệt, xuất ra một tài liệu. $project được sử dụng để chuyển các tài liệu có các trường được yêu cầu sang giai đoạn tiếp theo trong quy trình
Phép chiếu trong MongoDB là gì?MongoDB Projection là một tính năng đặc biệt cho phép bạn chỉ chọn dữ liệu cần thiết thay vì chọn toàn bộ tập hợp dữ liệu từ tài liệu . Ví dụ: Nếu Tài liệu chứa 10 trường và chỉ có 5 trường được hiển thị thì có thể đạt được điều tương tự bằng cách sử dụng Phép chiếu.
Chúng tôi có thể sử dụng $in trong dự án MongoDB không?Có thể sử dụng toán tử $in ở các giai đoạn $project hoặc $match của truy vấn tổng hợp , nhưng cách sử dụng và mục đích không hoàn toàn giống nhau ở mỗi giai đoạn.
Việc sử dụng $in trong truy vấn MongoDB là gì?MongoDB cung cấp các loại toán tử truy vấn so sánh khác nhau và toán tử $in là một trong số đó. Toán tử này được sử dụng để chọn những tài liệu có giá trị của trường bằng với bất kỳ giá trị đã cho nào trong mảng . |