MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pobierz uporządkowany wynik według trafności z zapytania tekstowego w kolekcji MongoDB za pomocą sterownika C#

Udało mi się to uruchomić metodą prób i błędów. Sztuczka polega na tym, że twój obiekt danych musi mieć już pole, które będzie zawierało MetaTextScore wartość. Więc biorąc pod uwagę interfejs:

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

końcowa funkcja wygląda tak:

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;
    }
}

Warto zauważyć, że TextMatchScore nie może mieć [BsonIgnore] dekoracja lub będzie wyjątek. Jednak może mieć [BsonIgnoreIfNull] dekoracja. Tak więc usuwając wartość z obiektu danych przed jego przekazaniem, obiekt danych można zapisać z powrotem w kolekcji bez wprowadzania wartości śmieci.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aktualizacja Mongodb z upsert nie powiodła się

  2. $elemDopasuj z wyrazistym

  3. Problem z instalacją sterownika MongoDb PHP na wamp

  4. Sterownik C# MongoDB:nie można znaleźć sposobu na uruchomienie złożonego zapytania dla filtra AnyIn w MongoDB

  5. Połączenie Mongodb w PHP nie działa