sql >> Database teknologi >  >> NoSQL >> MongoDB

Elementet 'id' matcher ikke noget felt eller egenskab af fejl med indlejrede klasser

Lang historie kort:det hele handler om konventioner. MongoDB .NET-driver afslører statisk klasse ConventionRegistry som giver dig mulighed for at registrere dine egne konventioner (mere her ). Derudover er der to "indbyggede" konventioner __defaults__ og __attributes__ . Graver dybere (driver

Hvilket betyder, at id medlemmer vil blive betragtet som almindelige BSON _id-elementer.

Hvordan løser man det?

Du kan slippe af med standardkonventioner

ConventionRegistry.Remove("__defaults__");

Men automatisk vil du droppe alle de andre driverkonventioner, hvilket er ret risikabelt. Alternativt kan du oprette en falsk ejendom, som altid vil være tom:

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

    [BsonId]
    public ObjectId FakeId { get; set; }
}

eller du kan bare bruge BsonNoId attribut som

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

Så konventionen vil indstille dit id som IdMember i klassekortet, men under efterbehandling vil denne attribut tvinge IdMember til at være nul, og din klasse vil blive deserialiseret med succes



  1. PyMongo og toArray() metoden

  2. MongoDb:Hvordan indsætter man yderligere objekt i objektsamling?

  3. Samlede mongo data php

  4. Synkronisering af MongoDB-serverdata til en IndexedDB lokal butik