MongoDB tổng hợp phù hợp như

Cung cấp giao diện giống như truy vấn để lọc tài liệu ra khỏi tập hợp. Loại bỏ các tài liệu không khớp với điều kiện từ quy trình tổng hợp và chuyển các tài liệu phù hợp dọc theo quy trình không thay đổi

Cú pháp được chuyển đến giống hệt với cú pháp. Hãy xem xét mẫu nguyên mẫu sau đây

db.article.aggregate(
    { $match : <match-predicate> }
);

Ví dụ sau thực hiện kiểm tra đẳng thức trường đơn giản

db.article.aggregate(
    { $match : { author : "dave" } }
);

Thao tác này chỉ trả về tài liệu trong đó trường tác giả giữ giá trị dave. Consider the following example, which performs a range test:

db.article.aggregate(
    { $match : { score  : { $gt : 50, $lte : 90 } } }
);

Ở đây, tất cả tài liệu trả về khi trường điểm có giá trị lớn hơn 50 và nhỏ hơn hoặc bằng 90.

注解

Đặt càng sớm trong tập hợp càng tốt. Do giới hạn tổng số tài liệu trong quy trình tổng hợp nên các hoạt động trước đó sẽ giảm thiểu khối lượng xử lý sau này. Nếu bạn đặt a ở đầu đường dẫn, truy vấn có thể tận dụng lợi thế của bất kỳ truy vấn nào khác hoặc

Lọc tài liệu để chỉ chuyển các tài liệu khớp với (các) điều kiện đã chỉ định sang giai đoạn quy trình tiếp theo

Giai đoạn $match có dạng nguyên mẫu sau.

{ $match: { <query> } }

$match lấy một tài liệu chỉ định các điều kiện truy vấn. Cú pháp truy vấn giống với cú pháp.

Cư xử

Tối ưu hóa đường ống

  • Đặt $match vào tập hợp càng sớm càng tốt. Vì $match giới hạn tổng số tài liệu trong quy trình tổng hợp nên trước đó $match operations minimize the amount of processing down the pipe.
  • Nếu bạn đặt $match ở đầu quy trình, truy vấn có thể tận dụng lợi thế của bất kỳ truy vấn nào khác hoặc.

Những hạn chế

  • Bạn không thể sử dụng truy vấn trong $match như một phần của quy trình tổng hợp.

  • Để sử dụng trong giai đoạn $match , $match stage has to be the first stage of the pipeline.

    Chế độ xem không hỗ trợ tìm kiếm văn bản

ví dụ

Các ví dụ sử dụng bộ sưu tập có tên bài viết với các tài liệu sau.

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b257"), "author" : "ahn", "score" : 60, "views" : 1000 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b258"), "author" : "li", "score" : 55, "views" : 5000 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b259"), "author" : "annT", "score" : 60, "views" : 50 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25a"), "author" : "li", "score" : 94, "views" : 999 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25b"), "author" : "ty", "score" : 95, "views" : 1000 }

trận đấu bình đẳng

Thao tác sau sử dụng $match để thực hiện so khớp đẳng thức đơn giản.

db.articles.aggregate(
    [ { $match : { author : "dave" } } ]
);

The $match chọn tài liệu mà tác giả . dave, and the aggregation returns the following:

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }

Thực hiện đếm

Ví dụ sau chọn tài liệu để xử lý bằng cách sử dụng toán tử đường ống $match rồi chuyển kết quả tới toán tử đường ống để tính toán số lượng .

db.articles.aggregate( [
  { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } },
  { $group: { _id: null, count: { $sum: 1 } } }
] );

Trong quy trình tổng hợp, $match chọn các tài liệu có điểm is greater than 70 and less than 90 or the views is greater than or equal to 1000. These documents are then piped to the to perform a count. The aggregation returns the following:

________số 8_______

参见

邮政编码数据集的聚合, 对用户爱好数据做聚合

←   $project (tập hợp) $redact (tập hợp)  →

© MongoDB, Inc 2008-2017. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc

Giai đoạn tổng hợp $match có thể được sử dụng để làm gì?

Giai đoạn tổng hợp này hoạt động giống như một tìm kiếm. Nó sẽ lọc tài liệu phù hợp với truy vấn được cung cấp . Sử dụng $match sớm trong quy trình có thể cải thiện hiệu suất vì nó giới hạn số lượng tài liệu mà các giai đoạn tiếp theo phải xử lý.

Làm cách nào để sử dụng $EQ trong MongoDB?

Toán tử đẳng thức ($eq ) được sử dụng để so khớp các tài liệu trong đó giá trị của trường bằng với giá trị đã chỉ định . Nói cách khác, toán tử $eq được sử dụng để xác định điều kiện bình đẳng. Điểm quan trọng. Nếu giá trị đã cho là một tài liệu, thì thứ tự của các trường trong tài liệu là quan trọng.

Làm cách nào để sử dụng elemMatch trong MongoDB?

Toán tử $elemMatch so khớp các tài liệu chứa trường mảng với ít nhất một phần tử khớp với tất cả các tiêu chí truy vấn đã chỉ định . Nếu bạn chỉ xác định một điều kiện

Thuật ngữ SQL nào giống với $match trong MongoDB?

Trong MongoDB, chúng tôi sử dụng $match làm toán tử tổng hợp tương ứng với điều kiện WHERE và HAVING trong MongoDB.