Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

396
Visualizações
Obtener un solo objeto de mongodb en C#

Recogí un fragmento de código que usa el controlador MongoDB como este para obtener un solo objeto de una colección... esto no puede ser correcto, ¿verdad? ¿Hay una mejor manera de conseguir esto?

 IMongoCollection<ApplicationUser> userCollection; .... userCollection.FindAsync(x => x.Id == inputId).Result.ToListAsync().Result.Single();
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Sí hay.

En primer lugar, no use FindAsync , use Find en su lugar. En el resultado de IFindFluent use el método de extensión SingleAsync y espere la tarea devuelta dentro de un método asíncrono:

 async Task MainAsync() { IMongoCollection<ApplicationUser> userCollection = ...; var applicationUser = await userCollection.Find(_ => _.Id == inputId).SingleAsync(); }

El nuevo controlador usa async-await exclusivamente. No lo bloquees usando Task.Result .

over 4 years ago · Santiago Trujillo Relatório

0

Debe limitar su consulta antes de ejecutar, de lo contrario, primero encontrará todos los resultados y luego solo leerá uno de ellos.

Puede especificar el límite usando FindOptions en FindAsync o usar la sintaxis fluida para limitar la consulta antes de ejecutarla:

 var results = await userCollection.Find(x => x.Id == inputId).Limit(1).ToListAsync(); ApplicationUser singleResult = results.FirstOrDefault();

El resultado de ToListAsync será una lista, pero dado que limitó la cantidad de resultados a 1, esa lista solo tendrá un único resultado al que puede acceder mediante Linq.

over 4 years ago · Santiago Trujillo Relatório

0

En las versiones más nuevas de MongoDB, Find() está en desuso, por lo que puede usar

 collection.FindSync(o => o.Id == myId).Single()

o

 collection.FindAsync(o => o.Id == myId).Result.Single()

También puede usar SingleOrDefault() , que devuelve un valor nulo si no se encuentra ninguna coincidencia en lugar de generar una excepción.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda