sql >> Database >  >> NoSQL >> MongoDB

Haal relevantie besteld resultaat op uit tekstquery op MongoDB Collection met behulp van het C#-stuurprogramma

Met vallen en opstaan ​​heb ik dit werkend gekregen. De truc is dat je data-object al een veld moet hebben dat de MetaTextScore bevat. waarde. Dus gezien de interface:

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

de uiteindelijke functie ziet er als volgt uit:

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

Het is vermeldenswaard dat TextMatchScore kan geen [BsonIgnore] . hebben decoratie, of er zal een uitzondering zijn. Het kan echter een [BsonIgnoreIfNull] . hebben decoratie. Dus door de waarde van het data-object te schrapen voordat het wordt opgeleverd, kan het data-object weer in de verzameling worden opgeslagen zonder een afvalwaarde in te voeren.




  1. Wat is de juiste manier om MongoDB op te vragen voor _id met behulp van string met Python?

  2. Vind documenten met een matrix die geen specifieke waarde bevat

  3. Verbind en bevraag Mongo-database via SSH met privésleutel in Python

  4. Een Mongoose seeding-script omzetten in een belofte