Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

366
Vistas
Controlador C# MongoDB: necesita un código simple para leer/consultar la colección

Soy nuevo en MongoDB y estoy usando el controlador C#, versión: v4.0.30319: usando MongoDB.Bson; utilizando MongoDB.Driver;

En primer lugar, lo siento porque probablemente sea una pregunta simple y simplemente no puedo encontrar lo que necesito correctamente con los términos de búsqueda correctos para que esto funcione.

Para mi proyecto. Puedo conectarme a la base de datos, obtener una lista de todas las colecciones y recorrer una de las colecciones usando ASYNC. El problema que tengo es tratar de encontrar ejemplos que funcionen para cosas simples como contar, limitar o encontrar/obtener registros específicos.

La mayoría de los ejemplos parecen ser una versión anterior a la que estoy usando y todo lo que puedo encontrar requiere ASYNC.

Aquí hay una función que tengo que está funcionando y devolviendo datos.

Quiero poder tener una función que funcione y devuelva subconjuntos de datos (mediante una consulta), obtenga un recuento y otras cosas simples.

Mis datos en la colección son:

 _id RocketRequestID int LoanRocketID int RequestDate date CreatedByID int RequestXML string/xml doc

mi función es:

 static async Task<int>MainAsync() { int CountRecords = 0; var client = new MongoDatabaseConnection().mongoConn(); IMongoDatabase db = client.GetDatabase("Viper"); var collection = db.GetCollection<BsonDocument>("RocketRequest"); using (IAsyncCursor<BsonDocument> cursor = await collection.FindAsync(new BsonDocument())) { while (await cursor.MoveNextAsync()) { IEnumerable<BsonDocument> batch = cursor.Current; foreach (BsonDocument document in batch) { Console.WriteLine(document); Console.WriteLine(); } } }// end using return CountRecords; }// end async

Nuevamente, esto es probablemente algo simple y me disculpo, pero agradezco cualquier ayuda que pueda brindar.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede crear un objeto para asignar a su colección:

 public class RocketRequest { public string Id { get; set; } public int RocketRequestID { get; set; } public int LoanRocketID { get; set; } public DateTime RequestDate { get; set; } public int CreatedByID { get; set; } public string RequestXML { get; set; } }

Luego intente usar Linq agregando la siguiente declaración de using

 using MongoDB.Driver.Linq;

Luego puede escribir consultas más simples como (por ejemplo)

 var collection = db.GetCollection<RocketRequest>("RocketRequest"); var count = collection.AsQueryable<Employee>() .Count();
over 4 years ago · Santiago Trujillo Denunciar

0

Utilice IFindFlient para recuperar sus datos:

Por ejemplo:

 var items = collection.Find(x => x.CreatedByID == 1).ToEnumerable()

O

 var itemsCount = collection.Find(x => x.RequestDate >= dateToSearch).Count()

Podría usar la clase y la carga de la colección, que se sugiere en la respuesta de @Alex. Es una buena explicación de cómo crear un objeto de colección y una clase de mapeo:

 public class RocketRequest { public string Id { get; set; } public int RocketRequestID { get; set; } public int LoanRocketID { get; set; } public DateTime RequestDate { get; set; } public int CreatedByID { get; set; } public string RequestXML { get; set; } }
 var collection = db.GetCollection<RocketRequest>("RocketRequest");
over 4 years ago · Santiago Trujillo Denunciar

0

puedes intentar usar algo como esto:

 public async Task<Round> GetRound(int id) { IMongoCollection<Round> collection = m_db.GetCollection<Round>("Rounds"); FilterDefinition<Round> filter = Builders<Round>.Filter.Eq("Round", id); return await collection.Find(filter).SingleOrDefaultAsync(); }

Ejecuto un filtro por Id, también, puede usar el método Count() en lugar de SingleOrDefaultAsync(), por supuesto, necesitará cambiar su tipo de devolución para eso.

 public async Task<long> GetRoundCount(int id) { IMongoCollection<Round> collection = m_db.GetCollection<Round>("Rounds"); FilterDefinition<Round> filter = Builders<Round>.Filter.Eq("Round", id); return await Task.Run(() => collection.Find(filter).Count()); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda