Tôi muốn thực hiện truy vấn MongoDB cho các tài liệu dựa trên biểu thức regex mà tôi đã phản đối. Ví dụ, tôi đã xây dựng một regex đơn giản như sau đó là sự kết hợp của một chữ cái ngẫu nhiên và một số ngẫu nhiên cho trong nodejs
Tôi đã thử các kết hợp khác nhau cho biến regex như
Không có o nó dường như hoạt động. Tuy nhiên, khi tôi viết Regex thực tế, tôi nhận được các hồ sơ cho ví dụ:
Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn Ganesh Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB 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 9 option), MongoDB recommends Atlas Search queries that use the 0 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. 1Cung cấp khả năng biểu thức thường xuyên 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. Để sử dụng 1, hãy sử dụng một trong các cú pháp sau: 1, use one of the following syntaxes:
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à 3) để chỉ định các biểu thức chính quy:
Để 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. 4Các 5 sau đây có sẵn để sử dụng với biểu thức thông thường.
Cho phép ký tự DOT (tức là
|
{ <field>: { $regex: /pattern/, $options: '<options>' } } |
{ <field>: { $regex: 'pattern', $options: '<options>' } } |
{ <field>: { $regex: /pattern/<options> } } |
{ name: { $in: [ /^acme/i, /^ack/ ] } }
4.Toán tử
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 không hỗ trợ công cụ sửa đổi tìm kiếm toàn cầu { name: { $in: [ /^acme/i, /^ack/ ] } }
4.{ 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: { $in: [ /^acme/i, /^ack/ ] } }
5, bạn chỉ có thể sử dụng các đối tượng biểu thức chính quy JavaScript (tức là { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
3). Ví dụ:{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 operator expressions inside an { name: { $in: [ /^acme/i, /^ack/ ] } }
5.Bạn không thể sử dụng các biểu thức toán tử
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 bên trong { name: { $in: [ /^acme/i, /^ack/ ] } }
5.{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 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ử
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1. Ví dụ:{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 operator expression with the { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
4 operator. For example, to specify the var stream = collection.find({"FirstName": /J.*/).stream();
9 and the { <field>: /pattern/<options> }
8 options, you must use { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
4 for both:{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
Để sử dụng tùy chọn
{ <field>: /pattern/<options> }
2 hoặc các tùy chọn { <field>: /pattern/<options> }
8, bạn phải sử dụng biểu thức toán tử { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 với toán tử { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
4. Ví dụ: để chỉ định các tùy chọn var stream = collection.find({"FirstName": /J.*/).stream();
9 và { <field>: /pattern/<options> }
8, bạn phải sử dụng { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
4 cho cả hai:{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 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ử
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 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:
8 bắt đầu một trận đấu không phân biệt trường hợp.{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } } { name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } } { name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
{ name: { $regex: /acme.*corp/i, $nin: [ 'acmeblahcorp' ] } } { name: { $regex: /acme.*corp/, $options: 'i', $nin: [ 'acmeblahcorp' ] } } { name: { $regex: 'acme.*corp', $options: 'i', $nin: [ 'acmeblahcorp' ] } }
9 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
0 khớp với các chuỗi đó:{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } } Bắt đầu với
1 hoặc{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
2. Đây là một trận đấu không nhạy cảm trường hợp.{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
Kết thúc với
{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
3. Đây là một trận đấu nhạy cảm trường hợp.
4{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
5{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
Các chuỗi này phù hợp với biểu thức thông thường ví dụ:
1 operator to find { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
7 field strings that match the regular expression { name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
0:{ name: { $regex: "(?i)a(?-i)cme" } }
Ví dụ sau sử dụng toán tử
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 để tìm chuỗi trường { name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
7 phù hợp với biểu thức thông thường { name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
0:Bắt đầu từ 4.0.7, toán tử
9 có thể thực hiện hoạt động logic{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
0 trên cả hai:{ name: { $regex: "(?i)a(?-i)cme" } }
Các đối tượng biểu thức chính quy (tức là
3){ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } } db.inventory.find( { item: { $not: /^p.*/ } } )
1 Biểu thức toán tử (bắt đầu bằng MongoDB 4.0.7). operator expressions (starting in MongoDB 4.0.7).{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } } Ví dụ:
0var stream = collection.find({"FirstName": /val/).stream(); && var stream = collection.find({"FirstName": /$val/).stream(); && var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream() && var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
Trong 4.0.6 và sớm hơn, bạn có thể sử dụng toán tử
{ name: { $regex: /acme.*corp/, $options: "si" } } { name: { $regex: 'acme.*corp', $options: "si" } }
9 với các đối tượng biểu thức thông thường (nghĩa là { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
3) nhưng không phải với các biểu thức toán tử { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1.{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 operator expressions.Đối với các truy vấn biểu thức chính quy nhạy cảm của trường hợp, nếu một chỉ mục tồn tại cho trường, thì MongoDB khớp với biểu thức chính quy với các giá trị trong chỉ mục, có thể nhanh hơn so với quét thu thập.
Tối ưu hóa hơn nữa có thể xảy ra nếu biểu thức chính quy là "biểu thức tiền tố", điều đó có nghĩa là tất cả các khớp tiềm năng bắt đầu với cùng một chuỗi. Điều này cho phép MongoDB xây dựng một "phạm vi" từ tiền tố đó và chỉ khớp với các giá trị đó từ chỉ số nằm trong phạm vi đó.
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 thân xe (
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
8) hoặc neo bên trái ({ name: { $regex: "(?i)a(?-i)cme" } }
7), theo sau là một chuỗi các ký hiệu đơn giản. Ví dụ, Regex { name: { $regex: "(?i)a(?-i)cme" } }
8 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 { name: { $regex: "(?i)a(?-i)cme" } }
9.Ngoài ra, trong khi
db.inventory.find( { item: { $not: /^p.*/ } } )
0, db.inventory.find( { item: { $not: /^p.*/ } } )
1 và db.inventory.find( { item: { $not: /^p.*/ } } )
2 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.inventory.find( { item: { $not: /^p.*/ } } )
1 và db.inventory.find( { item: { $not: /^p.*/ } } )
2 chậm hơn. db.inventory.find( { item: { $not: /^p.*/ } } )
0 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
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 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.inventory.find( { item: { $not: /^p.*/ } } )
7 sau:var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
1Ví dụ sau phù hợp với tất cả các tài liệu trong đó trường
db.inventory.find( { item: { $not: /^p.*/ } } )
8 giống như db.inventory.find( { item: { $not: /^p.*/ } } )
9:var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
2Ví dụ tương tự như câu lệnh SQL giống như sau:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
3Ví dụ đầu ra:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
4Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
5Ví dụ đầu ra:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
6Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
7Ví dụ đầu ra:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
6Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
9Ví dụ sau sử dụng tùy chọn
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
7 để khớp các dòng bắt đầu với chữ cái var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
04 cho các chuỗi đa dòng:{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
1 pattern does not contain an anchor, the pattern matches against the string as a whole, as in the following example:Không có tùy chọn { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
7, đầu ra ví dụ là:Ví dụ đầu ra:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
6Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.var stream = collection.find({"FirstName": /J.*/).stream();
2Ví dụ đầu ra:
var stream = collection.find({"FirstName": /J.*/).stream();
3Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.var stream = collection.find({"FirstName": /J.*/).stream();
4Ví dụ sau sử dụng tùy chọn
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
7 để khớp các dòng bắt đầu với chữ cái var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
04 cho các chuỗi đa dòng:var stream = collection.find({"FirstName": /J.*/).stream();
5Ví dụ đầu ra:
var stream = collection.find({"FirstName": /J.*/).stream();
6Ví dụ sau đây sử dụng tùy chọn
var stream = collection.find({"FirstName": /J.*/).stream();
9 thực hiện phù hợp không phân biệt trường hợp cho các tài liệu có giá trị db.inventory.find( { item: { $not: /^p.*/ } } )
8 bắt đầu bằng var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
02.
16var stream = collection.find({"FirstName": /val/).stream(); && var stream = collection.find({"FirstName": /$val/).stream(); && var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream() && var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
17var stream = collection.find({"FirstName": /val/).stream(); && var stream = collection.find({"FirstName": /$val/).stream(); && var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream() && var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
var stream = collection.find({"FirstName": /J.*/).stream();
7Ví dụ đầu ra:
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
6