MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Dừng mongodb bỏ qua các ký tự đặc biệt?

Mô tả của Tomalak về cách hoạt động của lập chỉ mục văn bản là chính xác, nhưng bạn thực sự có thể sử dụng chỉ mục văn bản cho một đối sánh cụm từ chính xác trên một cụm từ có ký tự đặc biệt:

> db.test.drop()
> db.test.insert({ "_id" : 0, "t" : "hey look at all this #text" })
> db.test.insert({ "_id" : 1, "t" : "text is the best" })
> db.test.ensureIndex({ "t" : "text" })

> db.test.count({ "$text" : { "$search" : "text" } })
2
> db.test.count({ "$text" : { "$search" : "#text" } })
2

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }

Đối sánh cụm từ chính xác được biểu thị bằng cách đặt cụm từ trong dấu ngoặc kép, cụm từ này cần được thoát ra trong shell như "\"#text\"" .

Chỉ mục văn bản lớn hơn chỉ mục bình thường, nhưng nếu bạn đang thực hiện nhiều đối sánh cụm từ chính xác không phân biệt chữ hoa chữ thường thì chúng có thể là một lựa chọn tốt hơn chỉ mục tiêu chuẩn vì chúng sẽ hoạt động tốt hơn. Ví dụ:trên một trường t với chỉ mục { "t" : 1 } , một regex đối sánh chính xác

> db.test.find({ "t" : /#text/ })

thực hiện quét chỉ mục đầy đủ. Truy vấn văn bản tương tự (nhưng không tương đương)

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })

sẽ sử dụng chỉ mục văn bản để định vị tài liệu có chứa thuật ngữ "text" , sau đó quét tất cả các tài liệu đó để xem chúng có chứa cụm từ đầy đủ "#text không ".

Hãy cẩn thận vì chỉ mục văn bản không phân biệt chữ hoa chữ thường. Tiếp tục ví dụ trên:

> db.test.insert({ "_id" : 2, "t" : "Never seen so much #TEXT" })

> db.test.find({ "t" : /#text/ })
{ "_id" : 0, "t" : "hey look at all this #text" }

> db.test.find({ "$text" : { "$search" : "\"#text\"" } })
{ "_id" : 0, "t" : "hey look at all this #text" }
{ "_id" : 2, "t" : "Never seen so much #TEXT" }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoCollection so với DBCollection java

  2. Làm điều gì đó nếu không tìm thấy gì với .find () mongoose

  3. Node.js + MongoDB:chèn một và trả về tài liệu mới được chèn

  4. Khung tổng hợp MongoDB - Đổi tên trường động

  5. chuyển đổi ngày iso thành dấu thời gian trong truy vấn mongo