Bạn đang tìm thứ gì đó có chứa "m" ở đâu đó [toán tử '
db.myCollection.find[{ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }];
3' của SQL tương đương với biểu thức chính quy' 'db.myCollection.find[{ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }];
4'], chứ không phải thứ có "m" neo vào đầu chuỗiGhi chú. MongoDB sử dụng các biểu thức chính quy mạnh hơn "THÍCH" trong SQL. Với các biểu thức chính quy, bạn có thể tạo bất kỳ mẫu nào mà bạn tưởng tượng
Để biết thêm thông tin về biểu thức chính quy, hãy tham khảo Biểu thức chính quy [MDN]
Mongodb – Thêm trường mới vào mọi tài liệu trong bộ sưu tập MongoDB
Tương tự như cập nhật trường bộ sưu tập hiện có, sẽ thêm một trường mới nếu trường được chỉ định không tồn tại
Kiểm tra ví dụ này
> db.foo.find[]
> db.foo.insert[{"test":"a"}]
> db.foo.find[]
{ "_id" : ObjectId["4e93037bbf6f1dd3a0a9541a"], "test" : "a" }
> item = db.foo.findOne[]
{ "_id" : ObjectId["4e93037bbf6f1dd3a0a9541a"], "test" : "a" }
> db.foo.update[{"_id" :ObjectId["4e93037bbf6f1dd3a0a9541a"] },{$set : {"new_field":1}}]
> db.foo.find[]
{ "_id" : ObjectId["4e93037bbf6f1dd3a0a9541a"], "new_field" : 1, "test" : "a" }
CHỈNH SỬA
Trong trường hợp bạn muốn thêm new_field vào tất cả bộ sưu tập của mình, bạn phải sử dụng bộ chọn trống và đặt nhiều cờ thành true [thông số cuối cùng] để cập nhật tất cả tài liệu
db.your_collection.update[
{},
{ $set: {"new_field": 1} },
false,
true
]
CHỈNH SỬA
Trong ví dụ trên, 2 trường cuối cùng
db.myCollection.find[{ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }];
6 chỉ định các cờ db.myCollection.find[{ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }];
7 và db.myCollection.find[{ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }];
8Upsert. Nếu được đặt thành true, hãy tạo tài liệu mới khi không có tài liệu nào khớp với tiêu chí truy vấn
đa. Nếu được đặt thành true, cập nhật nhiều tài liệu đáp ứng tiêu chí truy vấn. Nếu được đặt thành false, hãy cập nhật một tài liệu
Thuật toán tìm kiếm văn bản ngram rất hữu ích để tìm kiếm văn bản cho một chuỗi ký tự cụ thể trong một trường của bộ sưu tập. Tính năng này có thể được sử dụng để tìm các kết quả khớp chuỗi con chính xác, cung cấp giải pháp thay thế để phân tích cú pháp văn bản từ các ngôn ngữ khác với danh sách các ngôn ngữ châu Âu đã được hỗ trợ bởi công cụ tìm kiếm toàn văn của Cộng đồng MongoDB. Nó cũng có thể trở nên thuận tiện hơn khi làm việc với văn bản trong đó các ký hiệu như dấu gạch ngang ['-'], dấu gạch dưới ['_'] hoặc dấu gạch chéo ["/"] không phải là dấu phân cách mã thông báo
Không giống như công cụ tìm kiếm toàn văn MongoDB, thuật toán tìm kiếm ngram chỉ sử dụng các ký tự phân cách mã thông báo sau không được tính là ký tự từ trong ngôn ngữ của con người
- Tab ngang
- tab dọc
- nguồn cấp dữ liệu
- Vận chuyển trở lại
- Không gian
Tìm kiếm văn bản ngram chậm hơn tìm kiếm toàn văn MongoDB
Cách sử dụng
Để sử dụng ngram, hãy tạo một chỉ mục văn bản trên bộ sưu tập, đặt tham số default_language
thành ngram
> db.collection.createIndex[{name:"text"}, {default_language: "ngram"}]
thuật toán tìm kiếm ngram xử lý các ký tự đặc biệt như các thuật ngữ riêng lẻ. Do đó, bạn không cần phải đặt chuỗi tìm kiếm trong dấu ngoặc kép thoát [\\"
] để truy vấn chỉ mục văn bản. Ví dụ: để tìm kiếm các tài liệu có ngày 2021-02-12
, hãy chỉ định thông tin sau
________số 8_______
Tuy nhiên, cả công cụ tìm kiếm toàn văn ngram và MongoDB đều coi các từ có dấu gạch nối-dấu trừ -
phía trước chúng là phủ định [e. g. “-coffee”] và loại trừ những từ như vậy khỏi kết quả tìm kiếm
Các toán tử truy vấn so sánh MongoDB như $eq và $ne rất hữu ích để tìm các giá trị bằng hoặc không bằng một giá trị so sánh chính xác cụ thể. Thay vào đó, khi cần tìm các giá trị dựa trên sự tương đồng, thì việc so khớp mẫu sẽ hữu ích. Để thực hiện khớp mẫu trong MongoDB, hãy sử dụng { trường. { $regex. "mẫu" } }, trong đó field
là trường bạn muốn kiểm tra và "mẫu" là một chuỗi mẫu biểu thức chính quy mô tả dạng chung của các giá trị mà bạn muốn so khớp
Các mẫu được sử dụng với toán tử truy vấn đánh giá $regex có thể chứa một số ký tự đặc biệt hoặc "siêu ký tự", đại diện cho một thứ khác ngoài chính chúng
Mặc dù hầu hết các ký tự trong các mẫu tự khớp với nhau, nhưng các ký tự đặc biệt sau đây là ngoại lệ
- dấu hoa thị [
*
], - dấu cộng [
+
], - dấu chấm hỏi [
?
], - dấu gạch chéo ngược [
\
], - khoảng thời gian [
.
], - dấu mũ [
^
], - ngoặc vuông [
[
và]
], - ký hiệu đô la [
$
], - dấu và [
*
0] - hoặc ký [______14_______1]
*
2- Việc thiếu các ký tự đặc biệt trong một mẫu khớp với bất kỳ chuỗi nào chứa các ký tự đó, bất kể ký tự nào đứng trước hay sau mẫu. Ví dụ: mẫu "a" khớp với bất kỳ chuỗi nào chứa 'a' trong chuỗi
- Ký tự '^' [dấu mũ] khớp với các chuỗi chứa mẫu ở đầu chuỗi
- Ký tự '$' [dấu đô la] khớp với các chuỗi có chứa mẫu ở cuối chuỗi
- Các '. ' [dấu chấm] ký tự khớp với bất kỳ ký tự đơn nào.
*
3 khớp với các chuỗi như*
4,*
5 và*
6. Tại vì '. ' khớp với bất kỳ ký tự đơn nào, nó khớp với chính nó và mẫu*
3 cũng khớp với chuỗi*
8
Bảng sau liệt kê các câu lệnh MySQL và các câu lệnh MongoDB tương ứng
MySQLMongoDBMethodTạo kết nốiTạo yêu cầu khách hàng ['mongodb']. MongoClientTạo cơ sở dữ liệuTạo kết nối & cơ sở dữ liệuTạo bảngTạo bộ sưu tậpInsert IntoInsertSelect FromFindWhereQueryToán tử truy vấn so sánh
==
>
2db. kiểm kê. cập nhật [ { "nhà cung cấp dịch vụ. phí". { $gt. 2 } }, { $set. { giá bán. 9. 99 } } ] CHỌN * TỪ hàng tồn kho WHERE qty < 20;db. kiểm kê. tìm [ { số lượng. { $lt. 20 } } ] CHỌN * TỪ hàng tồn kho WHERE qty IN [5, 15];db. kiểm kê. tìm [ { số lượng. { $in. [ 5, 15 ] } } ] CHỌN * TỪ hàng tồn kho KHÔNG CÓ SỐ LƯỢNG [5, 15];db. kiểm kê. tìm [ { số lượng. { $nin. [ 5, 15 ] } } ]
Toán tử truy vấn logic
VÀHOẶC LÀ
KHÔNG PHẢI
Toán tử truy vấn logic
MySQLMongoDBSELECT * TỪ kho WHERE giá > 19. 99 AND danh mục IN ['rượu', 'rượu mùi'];db. kiểm kê. tìm[ { $và. [ { giá bán. { $gt. 19. 99 } }, { thể loại. { $in. ['rượu', 'rượu mùi'] } } ] } ] CHỌN * TỪ hàng tồn kho WHERE qty < 20 OR price = 10;db. kiểm kê. tìm[ { $or. [ {số lượng. { $lt. 20 } }, { giá. 10 } ] } ] CHỌN * TỪ hàng tồn kho KHÔNG [giá > 1. 00];db. kiểm kê. tìm [ { giá. { $không. { $gt. 1. 99 } } } ] CHỌN * TỪ khoảng không quảng cáo WHERE giá. = 1. 99 AND qty >= 20 AND sale = FALSE;db. kiểm kê. tìm[ { $nor. [ { giá bán. 1. 99 }, { số lượng. { $lt. 20 } }, { giảm giá. true } ] } ]
*
9+
0MySQLMongoDBLIKE '%a%'{ "name". { "$regex". "a" }THÍCH 'A%'{ "tên". { "$regex". "^A" }THÍCH '%e'{ "tên". { "$regex". "e$" }THÍCH '%d_g%'{ "tên". { "$regex". "đ. g" }Order BySortDeleteDeleteDrop TableDrop CollectionUpdateUpdateLimitLimitJoinJoin