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

要素'id'は、ネストされたクラスのエラーのフィールドまたはプロパティと一致しません

    簡単に言えば、それはすべて慣習についてです。 MongoDB .NETドライバーは、静的クラスConventionRegistryを公開します これにより、独自の規則を登録できます(more ここ )。さらに、2つの「組み込み」規則があります__defaults__ および__attributes__ 。深く掘り下げる(ドライバー

    つまり、id メンバーは通常のBSON_id要素と見なされます。

    それを修正する方法は?

    デフォルトの規則を取り除くことができます

    ConventionRegistry.Remove("__defaults__");
    

    ただし、自動的に他のすべてのドライバー規則を削除するため、かなり危険です。または、常に空になる偽のプロパティを作成することもできます:

    public class SubServiceDef
    {
        [BsonElement("id")]
        public int Id { get; set; }
    
        [BsonId]
        public ObjectId FakeId { get; set; }
    }
    

    または、BsonNoIdを使用することもできます

    の属性
    [BsonNoId]
    public class SubServiceDef
    {
        [BsonElement("id")]
        public int Id { get; set; }
    }
    

    したがって、規則ではidを設定します クラスマップのIdMemberとしてですが、後処理中にこの属性はIdMemberを強制的にnullにし、クラスは正常に逆シリアル化されます



    1. スプリングデータmongodbリポジトリを使用してオプションのクエリパラメータを追加します

    2. アレイが存在する場所を更新するか、新しいアレイアイテムを挿入します

    3. マングースサブドキュメントの並べ替え

    4. MongoDBに生年月日を保存するための最良の方法は何ですか?