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

Json.NETがMongoObjectIdを逆シリアル化すると、間違った結果が返されます

    ReadJsonを実装しています コンバーターのメソッドが正しくありません。 existingValue パラメータは、JSONから読み取られた逆シリアル化された値を提供するのではなく、置き換えるオブジェクトの既存の値を提供します 。ほとんどの場合、これはnullまたは空になります。あなたがする必要があるのはreaderを使うことです JSONから値を取得するには、必要に応じて変換してから、変換された値を返します。

    ObjectIdを想定 クラスには16進文字列を受け入れるコンストラクタがあります。これが、ReadJsonを実装する方法です。 方法:

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        JToken token = JToken.Load(reader);
        return new ObjectId(token.ToObject<string>());
    }
    



    1. $nearを使用してドキュメントに保存されている距離でドキュメントをフィルタリングする

    2. MongoDBドライバーで再接続イベントをリッスンする

    3. ネイティブドライバーとExpress.jsでMongoDBを使用すると、トポロジが破壊されました

    4. アレイ上のmongoDBアップサート