Làm cách nào để tìm kiếm các ký tự đặc biệt trong MongoDB?

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ỗi

Ghi 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' });
8

Upsert. 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 ([]),
  • ký hiệu đô la ($),
  • dấu và (*0)
  • hoặc ký (______14_______1)
Để khớp một ký tự đặc biệt, hãy thêm dấu gạch chéo ngược vào trước ký tự đó, như thế này *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 FromFindWhereQuery

Toán tử truy vấn so sánh

=
=
>
<
TRONG
KHÔNG VÀO

Toán tử truy vấn so sánh






MySQLMongoDBSELECT * TỪ Khoảng không quảng cáo WHERE qty = 20;db. kiểm kê. tìm ( { số lượng. { $eq. 20 } } ) CHỌN * TỪ Tồn kho WHERE qty. = 20;db. kiểm kê. tìm ( { số lượng. { $ne. 20 } } )CẬP NHẬT giá SET hàng tồn kho = 9. Hãng 99 WHERE. phí > 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


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

Làm cách nào để tìm kiếm một ký tự trong MongoDB?

Để tìm kiếm một chuỗi có ký tự đặc biệt trong tài liệu MongoDB, bạn có thể sử dụng \ . Ở đây, chúng tôi có ký tự đặc biệt $ trong chuỗi của chúng tôi.

Làm cách nào để tìm kiếm trong MongoDB bằng ký tự đại diện?

Tạo Chỉ mục ký tự đại diện trên tất cả các trường . Nếu một trường nhất định là một tài liệu hoặc mảng lồng nhau, chỉ mục ký tự đại diện sẽ lặp lại vào tài liệu/mảng và lưu trữ giá trị cho tất cả các trường trong tài liệu/mảng.

Làm cách nào để chèn các ký tự đặc biệt trong MongoDB?

Để khớp một ký tự đặc biệt, đặt dấu gạch chéo ngược lên trước ký tự đó , như thế này \*.

Làm cách nào để sử dụng regex với MongoDB?

Nếu bạn muốn thêm một biểu thức chính quy bên trong danh sách điều kiện truy vấn được phân tách bằng dấu phẩy, thì bạn phải sử dụng toán tử $regex. If you want to use x and s options then you have to use $regex operator expression with $options. Starting from the latest version of MongoDB(i.e., 4.0.