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

Làm cách nào để thực hiện tìm kiếm nhiều văn bản bằng cách sử dụng truy vấn $ text và $ hoặc trong mongodb / mongoose?

Lỗi thực tế đó cho thấy mongodb của bạn là phiên bản nhỏ hơn 2.6 (vì vậy không có văn bản tìm kiếm theo cách đó). Nhưng dù sao thì bạn cũng không thể làm điều đó vì hai lý do.

  1. Một $or biểu thức chỉ có thể có một biểu thức chỉ mục đặc biệt, là "văn bản" hoặc "không gian địa lý" trong các đối số.

  2. Bạn đang mong đợi tìm kiếm văn bản trên "hai" trường khác nhau và bạn chỉ có thể có một chỉ mục văn bản cho mỗi bộ sưu tập. Tuy nhiên, chỉ mục đơn lẻ đó có thể được trải rộng trên một số trường trong tài liệu. Nhưng bạn không thể hỏi các cụm từ tìm kiếm khác nhau cho các trường khác nhau.

Tài liệu trích dẫn :

Và nó cũng sẽ nói "Bạn không thể sử dụng $or với $text biểu thức hoặc $near toán tử trong đó một trong hai được sử dụng trong nhiều điều kiện. " Nhưng thiếu một chút thông tin mà bạn vẫn không làm được.

Cú pháp của bạn nói chung không đúng, nhưng ngay cả với cú pháp đúng trong phiên bản MongoDB được hỗ trợ, bạn vẫn sẽ gặp lỗi khi cố sử dụng $or như thế này:

Error: error: {
    "$err" : "Can't canonicalize query: BadValue Too many text expressions",
    "code" : 17287
}

Vì vậy, để giải quyết điều này, bạn cần:

  1. Để có phiên bản máy chủ MongoDB 2.6 trở lên hỗ trợ $text cú pháp (hoặc trực tiếp với các biểu mẫu lệnh)

  2. Sống với việc lập chỉ mục trên nhiều trường và sử dụng một chỉ mục duy nhất.

  3. Để thực hiện "các truy vấn riêng biệt" thay cho "hoặc" điều kiện của bạn và "kết hợp" các kết quả trong giao diện API ứng dụng khách của bạn.

Đó là cách duy nhất bạn nhận được các điều kiện "hoặc" như thế này với tìm kiếm văn bản MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ dateToParts

  2. Các vấn đề về hiệu suất thu thập có giới hạn

  3. MongoDb - Làm cách nào để cập nhật nhiều phần tử của một đối tượng lồng nhau bằng cách sử dụng $ set?

  4. Meteor JS:Ứng dụng khách không nhận được dữ liệu từ Mongo DB

  5. MongoDB tổng hợp với PHP - nhóm theo ngày