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

278
Vistas
Trabajando con .net core y mongodb entendiendo el rendimiento

Esta es la primera vez que tengo .net core y MongoDB generalmente usa Entity Framework ORM. Uso .net core 3 y el controlador MongoDB 2.11 para trabajar con la base de datos.

Este es un ejemplo de un servicio de repositorio:

 public class Repository<T> : IRepository<T> where T : IDocument { private readonly IMongoCollection<T> _collection; public Repository(IDatabaseSettings settings) { var client = new MongoClient(settings.ConnectionString); var database = client.GetDatabase(settings.DatabaseName); _collection = database.GetCollection<T>(GetCollectionName(typeof(T))); } Task<T> FindOneAsync(Expression<Func<T, bool>> filterExpression){} Task<T> FindByIdAsync(string id){} Task InsertOneAsync(T document) {} Task InsertManyAsync(ICollection<T> documents){} Task ReplaceOneAsync(T document) {} Task DeleteOneAsync(Expression<Func<T, bool>> filterExpression){} Task DeleteByIdAsync(string id) {} Task DeleteManyAsync(Expression<Func<T, bool>> filterExpression){} }

Como puede ver, esta es una definición estándar de clase de repositorio.

Mi pregunta es cuando el repositorio funciona con una colección específica, ¿toda la colección se carga en la memoria local?

Por ejemplo, si quiero encontrar un documento específico en la colección, ¿GetCollection en el constructor obtiene la colección de la base de datos y se ejecuta en todos los documentos de la colección localmente?

¿O genera una consulta y la ejecuta en una base de datos de manera similar a Entity Framework ORM?

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

0

Mi pregunta es cuando el repositorio funciona con una colección específica, ¿toda la colección se carga en la memoria local?

No.

Solo se necesita un "mango" para la colección. No recupera ningún documento.

Por ejemplo, si quiero encontrar un documento específico en la colección, ¿GetCollection en el constructor obtiene la colección de la base de datos y se ejecuta en todos los documentos de la colección localmente?

Ninguno.

Debería usar FindOne o FindById . Esos emitirán una consulta para obtener documentos (uno para el caso)

por cierto, es posible que también desee un Find (por lo tanto, para obtener más de un documento)

¿O genera una consulta y la ejecuta en una base de datos de manera similar a Entity Framework ORM?

GetCollection no genera una consulta para buscar nada


Parece un poco "autoritario", por lo que puede abrir un shell mongo y jugar:

 // just set up some data to collection dummy > db.dummy.insert([{a:2},{a:1}]) // look for any document having field 'a' with value 1. // only one doc returned, fair enough > db.dummy.find({ a: 1 }) { "_id" : ObjectId("60334ea3623e06e621f86a0b"), "a" : 1 } // this is equivalent to > db.getCollection('dummy').find({ a: 1 }) // without the find() you just get information on the collection, NO documents fetched // imagine collection as an object, on which you can issue queries (find, findOne, remove, ...) // but not necessarily query to touch documents: eg ensureIndex, help, ... // (just type <<tab>> to see available commands) > db.getCollection('dummy') dummy.dummy

Como nota al margen, getCollection permite apuntar a nombres de colección con nombres un poco peculiares como

 db._dummy.insert({ a: 1 }) // fails because of '_' char uncaught exception: TypeError: db._dummy is undefined : db.getCollection('_dummy').insert({ a: 1 }) WriteResult({ "nInserted" : 1 })
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