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

Lấy kết quả có thứ tự về mức độ liên quan từ Truy vấn văn bản trên Bộ sưu tập MongoDB bằng Trình điều khiển C #

Tôi đã có thể làm cho điều này hoạt động thông qua thử nghiệm và sai sót. Mẹo là đối tượng dữ liệu của bạn cần phải có một trường trên đó sẽ chứa MetaTextScore giá trị. Vì vậy, với giao diện:

interface ITextSearchSortable {
    double? TextMatchScore { get; set; }
}

hàm cuối cùng trông như thế này:

public IEnumerable<T> TextSearch<T>(MongoCollection<T> coll, string text) where T:ITextSearchSortable {
    var cursor = coll.Find(Query.Text(text))
        .SetFields(Fields<T>.MetaTextScore(t => t.TextMatchScore))
        .SetSortOrder(SortBy<T>MetaTextScore(t => t.TextMatchScore));
    foreach(var t in cursor) {
        // prevent saving the value back into the database
        t.TextMatchScore = null;
        yield return t;
    }
}

Cần lưu ý rằng TextMatchScore không thể có [BsonIgnore] trang trí, hoặc sẽ có một ngoại lệ. Tuy nhiên, nó có thể có [BsonIgnoreIfNull] trang trí. Vì vậy, bằng cách loại bỏ giá trị khỏi đối tượng dữ liệu trước khi tạo ra nó, đối tượng dữ liệu có thể được lưu lại vào bộ sưu tập mà không cần đưa vào giá trị rác.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách chuyển truy vấn bên trong trong mongodb từ javascript

  2. Chèn bản ghi lớn vào mongodb bằng cách sử dụng mongo shell

  3. ứng dụng hết thời gian chờ khi kết nối với MongoLab từ Heroku

  4. Bạn có thể có mongo $ push prepend thay vì append không?

  5. Làm cách nào để trả về kết quả Mongoose từ phương thức find?