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

370
Vistas
$unset matriz 2D MongoDB (C#)

Buenos días,

Tengo un problema con MongoDb, estoy tratando de desactivar un índice de "citas", en mi Json puede ver 1 campo de citas con 2 citas: "Saisir ou Selection une citations" y "XD", me gustaría unset XD, ¿cómo puedo lograr esto?

 { "_id" : ObjectId("604ca13de0059b65e4e67c01"), "username" : "LOL", "pass" : "LOL", "citations" : [ [ { "body" : "Saisir ou Selection une citations", "author" : "author", "oeuvre" : "oeuvre", "annee" : NumberInt(1) } ], [ { "body" : "XD", "author" : "XD", "oeuvre" : "XD", "annee" : NumberInt(3) } ] ]

}

He probado muchas cosas:

 db.getCollection("Users").update( {}, {$unset : {"citations.$.body" : "XD"}} )

y probé muchas otras variantes pero no encontré la solución correcta.

PD:

Estoy trabajando en una aplicación C# Wpf, sería perfecto si pudiera ayudarme en este idioma, pero de lo contrario, no se preocupe, no es muy diferente.

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

0

En la función de actualización, debe dar la primera condición. Entonces es posible que deba usar "$ pull" para eliminar valores de la matriz.

Debería ser algo como esto:

 db.getCollection("Users").update( {citations.body: "XD"}, {$pull : {"citations.$.body" : "XD"}} )
over 4 years ago · Santiago Trujillo Denunciar

0

tendrá que usar los operadores ElemMatch y PullFilter en el controlador C# para lograr su objetivo de la siguiente manera:

 var filter = Builders<User>.Filter.ElemMatch( u => u.Citations, c => c.Body == "XD"); var update = Builders<User>.Update.PullFilter( u => u.Citations, c => c.Body == "XD"); await userCollection.UpdateManyAsync(filter, update);

aquí hay otra forma menos detallada de hacer lo mismo usando la biblioteca MongoDB.Entities (que escribí):

 using MongoDB.Entities; using System.Linq; using System.Threading.Tasks; namespace TestApplication { public class User : Entity { public Citation[] Citations { get; set; } } public class Citation { public string Body { get; set; } } public static class Program { private static async Task Main() { await DB.InitAsync("test"); await new[] { new User { Citations = new[] { new Citation { Body = "Saisir ou Selection une citations"}, new Citation { Body = "XD"}, } }, new User { Citations = new[] { new Citation { Body = "Saisir ou Selection une citations"}, new Citation { Body = "XD"}, } } }.SaveAsync(); await DB.Update<User>() .Match(u => u.Citations.Any(c => c.Body == "XD")) .Modify(f => f.PullFilter(u => u.Citations, c => c.Body == "XD")) .ExecuteAsync(); } } }

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