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

MongoDB Không thể chuẩn hóa truy vấn:BadValue Quá nhiều biểu thức văn bản

Lỗi là khá chính xác. Những gì bạn đang cố gắng làm là tạo "nhiều truy vấn văn bản" bên trong $or tình trạng. MongoDB không thể làm điều đó và trên thực tế nó được nêu trong dòng đầu tiên của Hạn chế trong trang hướng dẫn cho $text .

Hơn nữa, bạn không phải để làm điều đó, nhưng thay vào đó chỉ định một chỉ mục văn bản trên bộ sưu tập của bạn để tìm kiếm trên nhiều trường nếu được yêu cầu:

db.collection.ensureIndex({ "comments": "text", "title": "text" })

Và sau đó, bạn có thể muốn gán trọng số như được hiển thị ở đây .

Nhưng có vẻ như tất cả những gì bạn thực sự yêu cầu là tìm kiếm "nhiều thuật ngữ". Vì vậy, bạn không sử dụng $or cho điều này, nhưng chỉ cần gửi danh sách các thuật ngữ được phân tách bằng dấu cách:

db.collection.find({ "$text": { "$search": "something else" } })

Sau đó, bất kỳ từ nào trong danh sách được phân cách bằng dấu cách sẽ được tìm kiếm trong ngữ cảnh của bất kỳ trường nào nằm trong chỉ mục văn bản và bất kỳ tài liệu nào có chứa "bất kỳ" từ nào trong số đó sẽ được trả về. Với các kết quả được sắp xếp theo "trọng số" của nhiều kết quả phù hợp hơn của các từ trong danh sách đó.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:Sắp xếp theo trường lồng nhau

  2. Tìm tài liệu có trường mảng chứa ít nhất n phần tử của một mảng nhất định

  3. Giám sát &Quản lý hoạt động của MongoDB 4.0 với ClusterControl

  4. Cách tốt hơn để chuyển Bộ sưu tập MongoDB sang Bộ sưu tập khác

  5. kết nối bồn rửa kafka mongodb không khởi động