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

Tìm kiếm giá trị của bất kỳ trường nào trong MongoDB mà không đặt tên rõ ràng

để thực hiện tìm kiếm văn bản trên tất cả các trường, trước tiên bạn phải tạo chỉ mục văn bản trên tất cả các trường.

như tài liệu mongodb chỉ ra, "Để cho phép tìm kiếm văn bản trên tất cả các trường có nội dung chuỗi, hãy sử dụng mã định nghĩa ký tự đại diện ($ **) để lập chỉ mục tất cả các trường có chứa nội dung chuỗi."

nếu bạn đang làm việc bên trong trình bao mongo (mà bạn thực thi từ dòng lệnh bằng cách gọi 'mongo'), thì bạn có thể thực hiện điều đó với lệnh này, trong đó 'collection' là tên của tập hợp trong db bạn muốn sử dụng.

db.collection.createIndex({ "$**": "text" },{ name: "TextIndex" })

đối tượng thứ hai, tức là {name:"TextIndex"} , là tùy chọn ... bạn thực sự không cần đặt tên cho chỉ mục, vì chỉ có thể có một chỉ mục văn bản duy nhất cho mỗi tập hợp (tại một thời điểm ... bạn có thể bỏ chỉ mục và tạo chỉ mục mới nếu bạn muốn).

khi bạn đã tạo chỉ mục văn bản trên tất cả các trường, bạn có thể thực hiện tìm kiếm văn bản đơn giản với đối tượng truy vấn sau:{ $text : { $search: <your string> } }

vì vậy, nếu bạn đang viết một hàm javascript, bạn có thể làm như sau:

var cursor = db.collection(<collection_name>).find({ $text: { $search: <your string> } });

để biết thêm thông tin về các cách khác nhau để kiểm soát tìm kiếm, hãy xem tài liệu mongodb về tìm kiếm văn bản tại đây



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi truyền JSON.NET khi tuần tự hóa Mongo ObjectId

  2. Kiến trúc để bảo mật:Hướng dẫn cho MongoDB

  3. Làm cách nào để lấy dữ liệu ReferenceField trong mongoengine?

  4. Lỗi:tài liệu thao tác cập nhật phải chứa toán tử nguyên tử, khi chạy updateOne

  5. Dãy lồng nhau truy vấn $ pull sử dụng trình điều khiển C # MongoDB