Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

369
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!