@ustus_alex

Как осуществить просмотр вложенного документа в коллекции MongoDB (MongoDB C# Driver)?

Добрый день, интересует меня вопрос о том, как можно средствами MongoDB C# Driver просматривать содержание вложенных документов в коллекциях.

Есть коллекция примерно следующего содержания:
{
 "_id" : ObjectId("5387548bd77a951d4006decd"),
 "AccountNr" : 123,
 "FirstName" : "Martin",
 "LastName"  : "Marley",
 "Address"   : {
                "Zip" : 40789
               }
}


И, есть классы описывающие ее:
public class Address
{
    [BsonElementAttribute("Zip")]
    public int Zip       { get; set; }

    [BsonElementAttribute("City")]
    public string City   { get; set; }

    [BsonElementAttribute("Street")]
    public string Street { get; set; }

    [BsonElementAttribute("HomeNr")]
    public int HomeNr { get; set; }
}

public class Client
{
    [BsonId]
    public ObjectId _id { get; set; }

    [BsonElementAttribute("AccountNr")]
    public int AccountNr { get; set; }

    [BsonElementAttribute("FirstName")]
    public string FirstName { get; set; }

    [BsonElementAttribute("LastName")]
    public string LastName { get; set; }

    [BsonElementAttribute("Address")]
    public Address address { get; set; }

    [BsonConstructor]
    public Client()
    {
        address = new Address();
    }

}


Есть метод осуществляющий вставку докуметов в коллекцию:
public void InsertCustomer(Client client )
    {
        MongoCollection<Client> document = myDatabase.GetCollection<Client>("Client");
        BsonDocument Client = new BsonDocument
        {
            {"AccountNr",client.AccountNr},
            {"FirstName",client.FirstName},
            {"LastName",client.LastName},
            {"Address", new BsonDocument{{"Zip",client.address.Zip}}}

        };
        document.Insert(Client);
    }


Есть так же метод позволяющий просмотреть содержание коллекции:
public List<Client> ViewAllClientsList()
{
    var collection = myDatabase.GetCollection<Client>("Client");
    MongoCursor<Client> clientResults = collection.FindAllAs<Client>();
    List<Client> allClients = clientResults.ToList<Client>();
    MessageBox.Show(allClients.ToJson().ToString());
    return allClients;
}


В MessageBox коллекция отображается целиком, как она есть:
ad23f5740bad47e39ba0d7b363fd268d.jpg

А, вот в Datagridview, когда я делаю привязку к allClients, имею на выходе следующее содержание:
0a3c80928bd34745ad4dfad78c691e9d.jpg

Как же добиться того, чтобы отобразить данные с вложенного документа?
  • Вопрос задан
  • 3104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы