Thư giãn trong tập hợp mongodb là gì?

Bóc tách từng phần tử của một mảng và trả về một luồng tài liệu. trả về một tài liệu cho mọi thành viên của mảng không kết nối trong mọi tài liệu nguồn. Thực hiện lệnh tổng hợp sau

db.article.aggregate(
    { $project : {
        author : 1 ,
        title : 1 ,
        tags : 1
    }},
    { $unwind : "$tags" }
);

注解

Ký hiệu đô la (i. e. $ ) phải tiến hành thông số kỹ thuật trường được giao cho người vận hành.

Trong tập hợp trên, hãy chọn (bao gồm) tác giả , tiêu đề, and tags fields, as well as the _id field implicitly. Then the pipeline passes the results of the projection to the operator, which will unwind the thẻ . Thao tác này có thể trả về một chuỗi tài liệu giống như sau đối với tập hợp chứa một tài liệu chứa trường thẻ với một mảng gồm 3 mục.

{
     "result" : [
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "good"
             },
             {
                     "_id" : ObjectId("4e6e4ef557b77501a49233f6"),
                     "title" : "this is my title",
                     "author" : "bob",
                     "tags" : "fun"
             }
     ],
     "OK" : 1
}

Một tài liệu trở thành 3 tài liệu. mỗi tài liệu giống hệt nhau ngoại trừ giá trị của trường thẻ . Mỗi giá trị của tags là một trong các giá trị trong mảng “tags” ban đầu.

注解

có những hành vi sau

  • hữu ích nhất khi kết hợp với
  • Bạn có thể hoàn tác các tác động của thao tác thư giãn với toán tử đường ống
  • Nếu bạn chỉ định một trường mục tiêu cho trường đó không tồn tại trong tài liệu đầu vào, quy trình bán hàng sẽ bỏ qua tài liệu đầu vào và sẽ không tạo tài liệu kết quả
  • Nếu bạn chỉ định trường đích cho trường đó không phải là mảng, aggregate() sẽ tạo ra lỗi.
  • Nếu bạn chỉ định một trường mục tiêu chứa một mảng trống ( [] ) trong tài liệu đầu vào, quy trình bán hàng sẽ bỏ qua tài liệu đầu vào .

  • <   $toUpper (tổng hợp)
  • /\  参考
  • $week (tổng hợp)  >

Trong trường hợp đầu tiên sử dụng $reduce, nó so sánh giá trị hiện tại trong mảng với giá trị tối thiểu được xác định (ban đầu được đặt thành giá trị đầu tiên), như được mô tả trong các nhận xét, độ phức tạp về thời gian nên là O(n), n là kích thước

Trong khi sử dụng $unwind như được mô tả trong ví dụ thứ hai, bạn cần giải cấu trúc các phần tử mảng, đó sẽ là O(n). Sau đó, cần sắp xếp trên item_field, sau khi bạn giải phóng mảng,

Trong trường hợp này, $reduce chỉ thực thi trên mỗi mục trường mảng tài liệu, trong khi $unwind sẽ mở rộng số lượng tài liệu thành nhóm, i. e. Nếu bạn giải phóng 100 tài liệu của 3 mục mảng, mỗi giai đoạn tiếp theo (sắp xếp và nhóm) sẽ kết thúc với 300 tài liệu để xử lý. Do đó làm tăng độ phức tạp cho $unwind thành O(n+logn), O(logn) cho sắp xếp.  

Ngoài ra, sắp xếp có một số hạn chế - và bạn cần xem xét đối với một mảng lớn hơn

Thư giãn trong tổng hợp là gì?

Ví dụ. thư giãn $ . Ở đây từ kết quả cho thấy rằng, mỗi tài liệu giống hệt với tài liệu đầu vào ngoại trừ giá trị của trường kích thước chứa giá trị từ mảng kích thước ban đầu. used to output a document for each element in the sizes array. Here from the result it shows that, each document is identical to the input document except for the value of the sizes field that contain the value from the original sizes array.

Điều nào sau đây là các giai đoạn trong tập hợp MongoDB?

Đây là 7 giai đoạn tổng hợp Pipeline trong MongoDB. .
dự án $
$match
nhóm $
$sắp xếp
$skip & $limit
$đầu tiên & $cuối cùng
thư giãn $

Các cách khác nhau để thực hiện tổng hợp trong MongoDB là gì?

$match. Nó được sử dụng để lọc các tài liệu có thể làm giảm số lượng tài liệu được cung cấp làm đầu vào cho giai đoạn tiếp theo. dự án $. Nó được sử dụng để chọn một số trường cụ thể từ một bộ sưu tập. nhóm $. Nó được sử dụng để nhóm các tài liệu dựa trên một số giá trị. $sắp xếp. Nó được sử dụng để sắp xếp tài liệu đang sắp xếp lại chúng

Tập hợp MongoDB trả về cái gì?

trả lại. Con trỏ tới các tài liệu được tạo bởi giai đoạn cuối cùng của hoạt động quy trình tổng hợp hoặc nếu bạn bao gồm tùy chọn giải thích, thì tài liệu cung cấp chi tiết về quá trình xử lý hoạt động tổng hợp. Nếu đường dẫn bao gồm toán tử $out, hàm tổng hợp() trả về một con trỏ trống