sql >> データベース >  >> NoSQL >> MongoDB

C#ドライバーを使用してMongoDBコレクションのテキストクエリから関連性の順序付けられた結果を取得する

    試行錯誤しながらこれを機能させることができました。秘訣は、データオブジェクトにMetaTextScoreを保持するフィールドがすでに存在している必要があることです。 価値。したがって、インターフェースが与えられます:

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

    最終的な関数は次のようになります:

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

    TextMatchScoreは注目に値します [BsonIgnore]を持つことはできません 装飾、または例外があります。ただし、[BsonIgnoreIfNull]を含めることができます 装飾。したがって、値を取得する前にデータオブジェクトから値をスクラブすることで、ガベージ値を入力せずにデータオブジェクトをコレクションに保存し直すことができます。




    1. MongoDB-ページング

    2. マングースの戻り結果をノードのjs変数に割り当てます

    3. mongoDBシャーディングの例

    4. マングース-オブジェクトのプロパティにアクセスできませんか?