1
resposta

Como realizar essa consulta

Tenho o seguinte exemplo:

{
  "livro": "Dom Casmurgo",
  "Autor": "Machado de Assis",
  "Ano": 1969,
  "Paginas": 678,
  "Tags": [
    "Literatura Brasileira",
    "Romance"
  ],
  "Comentarios": {
    "name": "Maria",
    "data": "2022-01-04",
    "resposta": "ótimo livro"
  }
}

O exemplo que o professor passou a não existe esse objeto comentários. Tentei realizar a consulta do mesmo jeito que ele passou usando o BsonDocument.

static async Task MainAsync(string[] args)
{
    var conexaoBiblioteca = new MongoDBContext();
    Console.WriteLine("Lista todos os registros");
    var listaLivros = await conexaoBiblioteca.Livro.Find(new BsonDocument()).ToListAsync();
    foreach (var doc in listEntry)
    {

        Console.WriteLine(doc.ToJson<Livro>());

    }
    Console.WriteLine("Fim da Lista");
}

Usando essa forma para consulta apresenta um erro:

An error occurred while deserializing the ContaDebitoLancamento property of class Aplication.Comentario: Cannot deserialize a 'List<Comentario>' from BsonType 'Document'.

*Gostaria de saber como realizar essa consulta, desde já agradeço. *

  • Ps.: Na minha classe Livro.cs criei um novo atributo: public List<Comentario>Comentario { get; set; } , bem como criei uma nova classe para comentário Comentario.cs, com os atributos: nome, data e resposta.
1 resposta

Boa noite, Vanessa. Pelo que entendi o json do seu documento a parte de comentários não é um array, então o .Net não conseguiu converter para o tipo List. Deveria ser mais ou menos assim:

"Comentarios": [{
    "name": "Maria",
    "data": "2022-01-04",
    "resposta": "ótimo livro"
  }]