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

Mongodb samling som dynamisk

MongoDB .NET-driver tilbyder få muligheder i sådanne tilfælde:

Polymorfi

Du kan bygge et hierarki af klasser, og MongoDB-driveren vil være i stand til at bestemme en type af et objekt, det hentes fra databasen:

[BsonKnownTypes(typeof(Post), typeof(NewTypePost))] public abstract class PostBase { [BsonId] public string Id { get; set; } } public class Post: PostBase { public string Message { get; set; } } public class NewTypePost: PostBase { public string Image { get; set; } }

MongoDB-driveren vil oprette yderligere felt _t i hvert dokument, som vil repræsentere tilsvarende klasse.

Enkelt klasse

Du kan stadig have Post klasse og brug BsonIgnoreIfNull attribut for at undgå undtagelse for serialisering. MongoDB .NET driver vil sætte disse egenskaber til null hvis de ikke findes i din database.

public class Post
{   
    [BsonId]
    public string Id { get; set; }
    [BsonIgnoreIfNull]     
    public string Message { get; set; } 
    [BsonIgnoreIfNull]
    public string Image { get; set; }
}
 

BsonDocument

Du kan også droppe en stærkt indtastet tilgang og bruge BsonDocument klasse, som er en dynamisk ordbogslignende struktur, der repræsenterer dine Mongo-dokumenter

var collection = db.GetCollection<BsonDocument>("posts");
 

Flere detaljer her

dynamisk

Angivelse af dynamic som generisk parameter for ICollection du bør få en liste over ExpandoObject der vil indeholde alle de værdier, du har i din database.

var collection = db.GetCollection<dynamic>("posts");
var data = collection.Find(Builders<dynamic>.Filter.Empty).ToList();
var firstMessage = data[0].Message; // dynamically typed code
 


  1. Er Firebase UID unikt på tværs af flere apps?

  2. Tilføjelse af værdier til et array i MongoDB med Java

  3. fjerne hætten til en begrænset MongoDB-samling

  4. Få indeks for givet element i matrixfelt i MongoDB