Hướng dẫn how do i search for a regular expression in mongodb? - làm cách nào để tìm kiếm biểu thức chính quy trong mongodb?

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

Đối với dữ liệu được lưu trữ trên Atlas MongoDB, MongoDB cung cấp giải pháp tìm kiếm toàn văn bản, MongoDB Atlas Search. Nếu bạn thường xuyên chạy các truy vấn regex không nhạy cảm trường hợp (sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6), MongoDB khuyên bạn nên truy vấn tìm kiếm ATLAS sử dụng giai đoạn đường ống tổng hợp ____27., MongoDB offers a full-text search solution, MongoDB Atlas Search. If you frequently run case-insensitive regex queries (utilizing the

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 option), MongoDB recommends Atlas Search queries that use the

{ name: { $in: [ /^acme/i, /^ack/ ] } }

7
aggregation pipeline stage.

Các truy vấn tìm kiếm ATLAS có ý nghĩa cải thiện hiệu suất của các truy vấn văn bản và cung cấp nhiều tùy chọn hơn để tùy chỉnh các tham số truy vấn. Để tìm hiểu thêm, hãy xem MongoDB Atlas tìm kiếm. significiantly improve the performance of text queries and offer more options for customizing query parameters. To learn more, see MongoDB Atlas Search.

Để triển khai tự quản lý, bạn có thể tìm thấy thông tin về khả năng Regex của chúng tôi dưới đây., you can find information on our regex capability below.

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 cung cấp các khả năng biểu thức chính quy cho các chuỗi khớp mẫu trong các truy vấn. MongoDB sử dụng các biểu thức thông thường tương thích Perl (tức là "PCRE") phiên bản 8.42 với hỗ trợ UTF-8.
Hướng dẫn how do i search for a regular expression in mongodb? - làm cách nào để tìm kiếm biểu thức chính quy trong mongodb?

Provides regular expression capabilities for pattern matching strings in queries. MongoDB uses Perl compatible regular expressions (i.e. "PCRE" ) version 8.42 with UTF-8 support.

Để sử dụng

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8, hãy sử dụng một trong các cú pháp sau:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
, use one of the following syntaxes:

{ : { $regex: /pattern/, $options: '' } }
{ : { $regex: 'pattern', $options: '' } }
{ : { $regex: /pattern/ } }

Trong MongoDB, bạn cũng có thể sử dụng các đối tượng biểu thức chính quy (nghĩa là

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
0) để chỉ định các biểu thức thông thường:

{ : /pattern/ }

Để hạn chế sử dụng cú pháp cụ thể, xem $ regex so với / mẫu / cú pháp.$regex vs. /pattern/ Syntax.

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1 Các
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
2 sau đây có sẵn để sử dụng với biểu thức thông thường.

The following

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
2 are available for use with regular expression.

Quyền mua

Sự mô tả

Hạn chế cú pháp

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6

Trường hợp vô cảm để phù hợp với các trường hợp trên và dưới. Ví dụ, xem thực hiện kết hợp biểu thức thông thường không nhạy cảm trường hợp.Perform Case-Insensitive Regular Expression Match.

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
4

Đối với các mẫu bao gồm các neo (nghĩa là

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
5 cho bắt đầu,
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
6 cho cuối), khớp ở đầu hoặc cuối của mỗi dòng cho các chuỗi có giá trị đa dòng. Không có tùy chọn này, các neo này khớp với đầu hoặc cuối chuỗi. Ví dụ, xem khớp đa dòng cho các dòng bắt đầu với mẫu được chỉ định.Multiline Match for Lines Starting with Specified Pattern.

Nếu mẫu không chứa neo hoặc nếu giá trị chuỗi không có ký tự dòng mới (ví dụ:

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
7), tùy chọn
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
4 không có hiệu lực.

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
9

Khả năng "mở rộng" để bỏ qua tất cả các ký tự không gian trắng trong mẫu

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 trừ khi thoát hoặc được đưa vào một lớp ký tự.

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
pattern unless escaped or included in a character class.

Ngoài ra, nó bỏ qua các ký tự ở giữa và bao gồm ký tự băm/pound không được giới thiệu (

{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
1) và dòng mới tiếp theo, để bạn có thể bao gồm các bình luận trong các mẫu phức tạp. Điều này chỉ áp dụng cho các ký tự dữ liệu; Các ký tự không gian trắng có thể không bao giờ xuất hiện trong các chuỗi ký tự đặc biệt trong một mẫu.

Tùy chọn

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
9 không ảnh hưởng đến việc xử lý ký tự VT (tức là mã 11).

Yêu cầu

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 với cú pháp
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1

{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
5

Cho phép ký tự DOT (tức là

{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
6) để khớp với tất cả các ký tự bao gồm các ký tự mới. Ví dụ, xem Sử dụng ký tự DOT
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
6 để phù hợp với dòng mới.Use the
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
6 Dot Character to Match New Line.

Yêu cầu

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 với cú pháp
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1

Cho phép ký tự DOT (tức là
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
6) để khớp với tất cả các ký tự bao gồm các ký tự mới. Ví dụ, xem Sử dụng ký tự DOT
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
6 để phù hợp với dòng mới.

Ghi chú

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 operator does not support the global search modifier

{ name: { $regex: "(?i)a(?-i)cme" } }

1.

Nhà điều hành

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 không hỗ trợ công cụ sửa đổi tìm kiếm toàn cầu

{ name: { $regex: "(?i)a(?-i)cme" } }

1.

{ name: { $in: [ /^acme/i, /^ack/ ] } }

Để bao gồm một biểu thức chính quy trong biểu thức truy vấn

{ name: { $regex: "(?i)a(?-i)cme" } }

2, bạn chỉ có thể sử dụng các đối tượng biểu thức chính quy JavaScript (tức là
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
0). Ví dụ:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
operator expressions inside an

{ name: { $regex: "(?i)a(?-i)cme" } }

2

Bạn không thể sử dụng các biểu thức toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 bên trong

{ name: { $regex: "(?i)a(?-i)cme" } }

2

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
operator. For example:

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }

Để bao gồm một biểu thức chính quy trong danh sách các điều kiện truy vấn được phân tách bằng dấu phẩy cho trường, hãy sử dụng toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8. Ví dụ:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
operator expression with the
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1
operator. For example, to specify the

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 and the
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
5 options, you must use
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1
for both:

{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }

Để sử dụng tùy chọn

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
9 hoặc các tùy chọn
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
5, bạn phải sử dụng biểu thức toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 với toán tử
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1. Ví dụ: để chỉ định các tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 và
{ name: { $regex: /acme.*corp/, $options: "si" } }
{ name: { $regex: 'acme.*corp', $options: "si" } }
5, bạn phải sử dụng
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
1 cho cả hai:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
operator and specify the regular expression as a string.

Để sử dụng các tính năng được hỗ trợ của PCRE trong một biểu thức thông thường không được hỗ trợ trong JavaScript, bạn phải sử dụng toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 và chỉ định biểu thức thông thường dưới dạng chuỗi.

  • Để phù hợp với các chuỗi không nhạy cảm trường hợp:

  • db.inventory.find( { item: { $not: /^p.*/ } } )

    5 bắt đầu một trận đấu không phân biệt trường hợp.

db.inventory.find( { item: { $not: /^p.*/ } } )

6 kết thúc một trận đấu không phân biệt trường hợp.

  • Ví dụ: biểu thức thông thường

    db.inventory.find( { item: { $not: /^p.*/ } } )

    7 khớp với các chuỗi đó:

  • Bắt đầu với

    db.inventory.find( { item: { $not: /^p.*/ } } )

    8 hoặc

    db.inventory.find( { item: { $not: /^p.*/ } } )

    9. Đây là một trận đấu không nhạy cảm trường hợp.

Kết thúc với

db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
0. Đây là một trận đấu nhạy cảm trường hợp.

  • db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
    db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
    1

  • db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
    db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
    2

Các chuỗi này phù hợp với biểu thức thông thường ví dụ:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 operator to find
db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
4 field strings that match the regular expression

db.inventory.find( { item: { $not: /^p.*/ } } )

7:

{ name: { $regex: "(?i)a(?-i)cme" } }

Ví dụ sau sử dụng toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 để tìm chuỗi trường
db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
4 phù hợp với biểu thức thông thường

db.inventory.find( { item: { $not: /^p.*/ } } )

7:

  • Toán tử

    db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
    db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
    6 có thể thực hiện thao tác logic
    db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
    db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
    7 trên cả hai:

    Các đối tượng biểu thức chính quy (tức là

    { name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
    { name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
    { name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
    0)

    db.inventory.find( { item: { $not: /^p.*/ } } )

  • Ví dụ: operator expressions

    Các đối tượng biểu thức chính quy (tức là

    { name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
    { name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
    { name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
    0)

    db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
    db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )

Ví dụ:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 operator expressions.

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 Biểu thức vận hành

Trong 4.0.6 và sớm hơn, bạn có thể sử dụng toán tử

db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )
6 với các đối tượng biểu thức thông thường (tức là
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
0) nhưng không phải với các biểu thức toán tử

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8.

Biểu thức chính quy là "biểu thức tiền tố" nếu nó bắt đầu bằng một cái chăm sóc (

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
5) hoặc neo bên trái (
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
4), theo sau là một chuỗi các ký hiệu đơn giản. Ví dụ, Regex
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
5 sẽ được tối ưu hóa bằng cách chỉ khớp với các giá trị từ chỉ mục bắt đầu với
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
6.

Ngoài ra, trong khi

db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
7,
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
8 và
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
9 khớp các chuỗi tương đương, chúng có các đặc điểm hiệu suất khác nhau. Tất cả các biểu thức này sử dụng một chỉ mục nếu một chỉ mục thích hợp tồn tại; Tuy nhiên,
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
8 và
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
9 chậm hơn.
db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )
7 có thể ngừng quét sau khi khớp tiền tố.

Trường hợp các truy vấn biểu thức chính quy không nhạy cảm thường không thể sử dụng các chỉ mục một cách hiệu quả. Việc triển khai

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8 không nhận thức được đối chiếu và không thể sử dụng các chỉ số không nhạy cảm trường hợp.

Các ví dụ trong phần này sử dụng bộ sưu tập

db.products.find( { sku: { $regex: /789$/ } } )

4 sau:

db.products.insertMany( [
{ _id: 100, sku: "abc123", description: "Single line description." },
{ _id: 101, sku: "abc789", description: "First line\nSecond line" },
{ _id: 102, sku: "xyz456", description: "Many spaces before line" },
{ _id: 103, sku: "xyz789", description: "Multiple\nline description" },
{ _id: 104, sku: "Abc789", description: "SKU starts with A" }
] )

Ví dụ sau phù hợp với tất cả các tài liệu trong đó trường

db.products.find( { sku: { $regex: /789$/ } } )

5 giống như

db.products.find( { sku: { $regex: /789$/ } } )

6:

db.products.find( { sku: { $regex: /789$/ } } )

Ví dụ tương tự như câu lệnh SQL giống như sau:

{ : /pattern/ }

0

Ví dụ đầu ra:

{ : /pattern/ }

1

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

{ : /pattern/ }

2

Ví dụ đầu ra:

{ : /pattern/ }

3

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

{ : /pattern/ }

4

Ví dụ đầu ra:

{ : /pattern/ }

3

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

{ : /pattern/ }

6

Ví dụ sau sử dụng tùy chọn

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
4 để khớp các dòng bắt đầu với chữ cái

{ : /pattern/ }

01 cho các chuỗi đa dòng:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

8
pattern does not contain an anchor, the pattern matches against the string as a whole, as in the following example:

{ : /pattern/ }

7

Ví dụ đầu ra:

{ : /pattern/ }

3

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

{ : /pattern/ }

9

Ví dụ đầu ra:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

0

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

{ name: { $in: [ /^acme/i, /^ack/ ] } }

1

Ví dụ sau sử dụng tùy chọn

{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
4 để khớp các dòng bắt đầu với chữ cái

{ : /pattern/ }

01 cho các chuỗi đa dòng:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

2

Ví dụ đầu ra:

{ name: { $in: [ /^acme/i, /^ack/ ] } }

3

Ví dụ sau đây sử dụng tùy chọn

{ name: { $in: [ /^acme/i, /^ack/ ] } }

6 thực hiện phù hợp không phân biệt chữ hoa chữ thường cho các tài liệu có giá trị

db.products.find( { sku: { $regex: /789$/ } } )

5 bắt đầu bằng

db.products.find( { sku: { $regex: /789$/ } } )

9.

  • { : /pattern/ }

    13

  • { : /pattern/ }

    14

{ name: { $in: [ /^acme/i, /^ack/ ] } }

4

Ví dụ đầu ra:

{ : /pattern/ }

3