sql >> Database >  >> NoSQL >> MongoDB

Mongodb-verzameling als dynamisch

MongoDB .NET-stuurprogramma biedt in dergelijke gevallen weinig mogelijkheden:

Polymorfisme

U kunt een hiërarchie van klassen bouwen en de MongoDB-driver kan een type object bepalen dat uit de database wordt opgehaald:

[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-stuurprogramma maakt een extra veld _t in elk document dat de overeenkomstige klasse zal vertegenwoordigen.

Eenpersoonsles

Je kunt nog steeds Post . hebben class en gebruik BsonIgnoreIfNull attribuut om serialisatie-uitzondering te voorkomen. MongoDB .NET-stuurprogramma stelt deze eigenschappen in op null als ze niet in uw database voorkomen.

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

BsonDocument

U kunt ook een sterk getypeerde benadering laten vallen en BsonDocument . gebruiken class, een dynamische woordenboekachtige structuur die uw Mongo-documenten vertegenwoordigt

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

Meer details hier

dynamisch

Specificeren van dynamic als generieke parameter van ICollection je zou een lijst moeten krijgen met ExpandoObject die alle waarden bevat die je in je database hebt.

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


  1. Mongoose vult (.populate()) niet in Productie (Heroku), maar werkt op Lokaal

  2. Sla afbeeldingsbestand op in binaire gegevens in mangoestschema en toon afbeelding in html-vorm

  3. Hoe dergelijke filterquery's in mongoengine uit te voeren op geneste dicts of arrays in dict met python?

  4. MongoDB en sluit zich aan