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

400
Vistas
MongoDB C# Eliminar registros filtrados excluyendo el último número N de registros

¿Cómo puedo eliminar registros filtrados de una colección excluyendo el último número N de registros?

Ejemplo: filtre por Id y luego conserve los últimos 10 registros y elimine todos los demás con esa Id.

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

0

Puede hacerlo filtrando primero las filas, luego creando un filtro de eliminación y finalmente aplicando la eliminación de la siguiente manera. esta muestra ha usado MongoDb.Driver para .net.

 var listFilter = Builders<Entity>.Filter.Eq(s => s.SomeProp, X); SortDefinition<Entity> sortDefinition = Builders<Entity>.Sort.Ascending(a => a.SomeProp); List<Entity> itemsAfterSkip = await this.DbSet.Find(listFilter).Sort(sortDefinition).Skip(10).Limit(10).ToListAsync(); FilterDefinition<Entity> deleteFilter = null; foreach (var item in itemsAfterSkip) { if (deleteFilter == null) { deleteFilter = MongoDB.Driver.Builders<Entity>.Filter.Eq(s => s.Id, item.Id); } else { deleteFilter = deleteFilter | MongoDB.Driver.Builders<Entity>.Filter.Eq(s => s.Id, item.Id); } } await DbSet.DeleteManyAsync(deleteFilter);
over 4 years ago · Santiago Trujillo Denunciar

0

aquí está mi solución usando el paquete MongoDB.Entities:

 using MongoDB.Driver; using MongoDB.Driver.Linq; using MongoDB.Entities; using System.Collections.Generic; using System.Threading.Tasks; namespace TestApplication { public class Person : Entity { public string Name { get; set; } public int NIC { get; set; } } public static class Program { private static async Task Main() { await DB.InitAsync("test"); var people = new List<Person>(); for (int i = 1; i <= 20; i++) { people.Add(new Person { Name = $"person {i}", NIC = i }); } await people.SaveAsync(); var idsToDelete = await DB.Queryable<Person>() .OrderByDescending(p => p.ID) .Skip(10) .Select(p => p.ID) .ToListAsync(); await DB.DeleteAsync<Person>(idsToDelete); } } }

descargo de responsabilidad: soy el autor de la biblioteca.

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