Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
$match
Filters Các tài liệu chỉ truyền các tài liệu phù hợp với [các] điều kiện được chỉ định cho giai đoạn đường ống tiếp theo.Filters the documents to pass only the documents that match the specified condition[s] to the next pipeline stage.
Giai đoạn $match
có dạng nguyên mẫu sau:$match
stage has the following prototype form:
$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 hệt với cú pháp truy vấn hoạt động đọc; tức là $match
không chấp nhận các biểu thức tổng hợp thô. Thay vào đó, hãy sử dụng biểu thức truy vấn
0 để bao gồm biểu thức tập hợp trong { "_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 } $match
takes a document that
specifies the query conditions. The query syntax is identical to the read operation query syntax; i.e. $match
does not accept
raw aggregation expressions. Instead, use a
{ "_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 }
0 query expression to include aggregation expression in
$match
Đặt
$match
càng sớm trong đường ống tổng hợp càng tốt. Bởi vì$match
giới hạn tổng số tài liệu trong đường ống tổng hợp, các hoạt động$match
trước đó giảm thiểu số lượng xử lý xuống đường ống.$match
as early in the aggregation pipeline as possible. Because$match
limits the total number of documents in the aggregation pipeline, earlier$match
operations minimize the amount of processing down the pipe.Nếu bạn đặt
$match
vào đầu đường ống, truy vấn có thể tận dụng các chỉ mục như bất kỳ
6 hoặc{ "_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 }
7 nào khác{ "_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 } $match
at the very beginning of a pipeline, the query can take advantage of indexes like any other
6 or{ "_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 }
7{ "_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 }
Cú pháp truy vấn
$match
giống hệt với cú pháp truy vấn hoạt động đọc; tức là$match
không chấp nhận các biểu thức tổng hợp thô. Để bao gồm biểu thức tập hợp trong$match
, hãy sử dụng biểu thức truy vấn
0:{ "_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 } $match
query syntax is identical to the read operation query syntax; i.e.$match
does not accept raw aggregation expressions. To include aggregation expression in$match
, use a
0 query expression:{ "_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 } { $match: { $expr: { } } }
Bạn không thể sử dụng
2 trong các truy vấndb.articles.aggregate[ [ { $match : { author : "dave" } } ] ]; $match
như một phần của đường ống tổng hợp.$match
queries as part of the aggregation pipeline.Bạn không thể sử dụng
4 hoặcdb.articles.aggregate[ [ { $match : { author : "dave" } } ] ];
5 trong các truy vấndb.articles.aggregate[ [ { $match : { author : "dave" } } ] ]; $match
như một phần của đường ống tổng hợp. Thay vào đó, bạn có thể:$match
queries as part of the aggregation pipeline. As an alternative, you can either:Sử dụng giai đoạn
7 thay vì giai đoạndb.articles.aggregate[ [ { $match : { author : "dave" } } ] ]; $match
.$match
stage.Sử dụng toán tử truy vấn
9 vớidb.articles.aggregate[ [ { $match : { author : "dave" } } ] ];
0 hoặc{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 }
1 trong giai đoạn{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 } $match
.$match
stage.
Để sử dụng
3 trong giai đoạn{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 } $match
, giai đoạn$match
phải là giai đoạn đầu tiên của đường ống.$match
stage, the$match
stage has to be the first stage of the pipeline.Lượt xem không hỗ trợ tìm kiếm văn bản.
Các ví dụ sử dụng một bộ sưu tập có tên
{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 }
6 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 }
Hoạt động sau sử dụng $match
để thực hiện phù hợp với bình đẳng đơn giản:$match
to perform a simple equality
match:
db.articles.aggregate[ [ { $match : { author : "dave" } } ] ];
$match
chọn các tài liệu trong đó trường
{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 }
9 bằng db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
0 và tổng hợp trả về như sau:$match
selects the documents where the { "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 }
9 field equals db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
0, and the aggregation returns the following:{ "_id" : ObjectId["512bc95fe835e68f199c8686"], "author" : "dave", "score" : 80, "views" : 100 } { "_id" : ObjectId["512bc962e835e68f199c8687"], "author" : "dave", "score" : 85, "views" : 521 }
Ví dụ sau chọn các tài liệu để xử lý bằng toán tử đường ống $match
và sau đó đưa kết quả vào toán tử đường ống
db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
2 để tính toán số lượng tài liệu:$match
pipeline operator and then pipes the results to the db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
2 pipeline operator to compute a count of the documents:db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
Trong đường ống tổng hợp, $match
chọn các tài liệu trong đó
db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
4 lớn hơn db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
5 và nhỏ hơn db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
6 hoặc db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
7 lớn hơn hoặc bằng db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
8. Các tài liệu này sau đó được đưa đến db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
2 để thực hiện đếm. Tổng hợp trả về những điều sau:$match
selects the documents where either the db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
4 is greater than db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
5 and less than db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
6 or the db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
7 is greater than or equal to db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
8. These documents are then piped to the db.articles.aggregate[ [ { $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } }, { $group: { _id: null, count: { $sum: 1 } } } ] ];
2 to perform a
count. The aggregation returns the following:{ "_id" : null, "count" : 5 }
Tham khảo các trang sau để biết thêm thông tin và sử dụng các trường hợp về tổng hợp.
Đối với các truy vấn
{ "_id" : null, "count" : 5 }
0 của bạn đối với dữ liệu trên cụm Atlas của bạn, bạn có thể sử dụng tùy chọn Toán tử Atlas SearchCompound { "_id" : null, "count" : 5 }
1 để khớp hoặc lọc tài liệu. Chạy $match
sau { "_id" : null, "count" : 5 }
0 ít hoạt động hơn so với chạy { "_id" : null, "count" : 5 }
0 với tùy chọn toán tử tổng hợp { "_id" : null, "count" : 5 }
1. Để tìm hiểu thêm về tùy chọn { "_id" : null, "count" : 5 }
1, xem Hợp chất.{ "_id" : null, "count" : 5 }
0 queries against data on your
Atlas cluster, you can use the Atlas Search compound operator { "_id" : null, "count" : 5 }
1 option to match or filter documents. Running
$match
after { "_id" : null, "count" : 5 }
0 is less performant than running
{ "_id" : null, "count" : 5 }
0 with the compound operator { "_id" : null, "count" : 5 }
1 option. To learn more about the { "_id" : null, "count" : 5 }
1 option, see compound.Tập hợp với tập dữ liệu mã zip
Tập hợp với dữ liệu ưu tiên người dùng