public PreguntasActualizar() { var conventions = new ConventionPack { new IgnoreExtraElementsConvention(true) }; ConventionRegistry.Register("IgnoreExtraElements", conventions, _ => true); Url = new MongoUrl(url); Db = new MongoClient(Url).GetServer().GetDatabase(Url.DatabaseName); var cl = Db.GetCollection <Pregunta> ("pregunta"); var preguntas = cl.FindAll().ToList(); var tabla = TablaNormas.GetData(); BulkWriteOperation bw = cl.InitializeOrderedBulkOperation(); tabla.ForEach(r => { var item = preguntas.FirstOrDefault(p => p.Numeral == r.Numeral); if (item != default(Pregunta)) { bw.Find(Query <Pregunta> .Where(q => q.Numeral == r.Numeral)) .Upsert().UpdateOne(Update <Pregunta> .Set(f => f.Decreto, r.Decreto).Set(f => f.OHSAS, r.OHSAS).Set(f => f.RUC, r.RUC)); } else { Console.WriteLine("NO encontrado :'{0}'", r.Numeral); } }); bw.Execute(); }
public void runSampleUpdates() { using (_ms.RequestStart(_mdb)) { try { MongoCollection mc = _mdb.GetCollection("csharp"); BulkWriteOperation bwo = mc.InitializeOrderedBulkOperation(); foreach (var doc in getAllDocuments("csharp")) { BulkWriteRequestBuilder bwrb = bwo.Find(new QueryDocument { { "counter", doc.GetValue("counter").AsInt32 } }); bwrb.Update(new UpdateDocument { { "$set", new UpdateDocument { { "counter", 1 } } } }); } BulkWriteResult bwr = bwo.Execute(); Console.WriteLine("Completed BulkWriteOperations [updates: " + bwr.ModifiedCount + "]"); displayCollection("csharp"); } catch (Exception ex) { Console.WriteLine("Caught Exception while BulkWriteOperation for Update: " + ex.StackTrace); } } }
public void runSampleDeletes() { using (_ms.RequestStart(_mdb)) { try { IEnumerable <string> collNames = _mdb.GetCollectionNames(); MongoCollection mc = _mdb.GetCollection("csharp"); BulkWriteOperation bwo = mc.InitializeOrderedBulkOperation(); BulkWriteRequestBuilder bwrb = bwo.Find(new QueryDocument { }); bwrb.Remove(); BulkWriteResult bwr = bwo.Execute(); Console.WriteLine("Completed BulkWriteOperations [deletes: " + bwr.DeletedCount + "]"); displayCollection("csharp"); } catch (Exception ex) { Console.WriteLine("Caught Exception while BulkWriteOperation for Delete: " + ex.StackTrace); } } }
public BulkResult <Descarga> UpdateCuestionario(UpdateCuestionario request) { var descarga = Single <Descarga> (q => q.Token == request.Data.Descarga.Token && q.IdDiagnostico == request.Data.Descarga.IdDiagnostico ); if (descarga.Id.IsNullOrEmpty()) { throw new Exception("Token token:'{0}' No encontrado".Fmt(request.Data.Descarga.Token)); } if (descarga.Estado == "green") { throw new Exception("Cuestionario asociado al Token token:'{0}' ya esta actualizado" .Fmt(request.Data.Descarga.Token)); } if (descarga.Estado == "red") { descarga.Estado = "yellow"; Put(descarga); } var bwr = new BulkWrite(); if (request.Data.Respuestas.Count > 0) { var cl = GetCollection <Respuesta> (); BulkWriteOperation bw = cl.InitializeOrderedBulkOperation(); request.Data.Respuestas.ForEach(r => { if (r.Respuestas.Count > 0) { r.Valor = (short?)(r.Respuestas.Exists(v => v == false)?0:1); } bw.Find(Query <Respuesta> .Where(q => q.IdDiagnostico == descarga.IdDiagnostico && q.IdPregunta == r.IdPregunta)) .Upsert().UpdateOne(Update <Respuesta> .Set(f => f.Valor, r.Valor).Set(f => f.NoAplicaChecked, r.NoAplicaChecked).Set(f => f.Respuestas, r.Respuestas)); }); var wc = bw.Execute(); bwr.PopulateWith(wc); bwr.UpsertsCount = wc.Upserts.Count; } if (request.Data.RespuestasGuias.Count > 0) { var gIds = request.Data.RespuestasGuias.ConvertAll(e => e.IdGuia); var guias = GetCollection <Guia>().Find(Query <Guia> .In((q) => q.Id, gIds)); var cl2 = GetCollection <RespuestaGuia> (); BulkWriteOperation bw2 = cl2.InitializeOrderedBulkOperation(); request.Data.RespuestasGuias.ForEach(r => { var guia = guias.FirstOrDefault(g => g.Id == r.IdGuia); bw2.Find(Query <RespuestaGuia> .Where(q => q.IdDiagnostico == descarga.IdDiagnostico && q.IdGuia == r.IdGuia)) .Upsert().UpdateOne(Update <RespuestaGuia> .Set(f => f.Valor, r.Valor) .Set(f => f.NoAplicaChecked, r.NoAplicaChecked) .Set(f => f.Tipo, guia.Tipo)); }); var wc2 = bw2.Execute(); bwr.DeleteCount += wc2.DeletedCount; bwr.InsertedCount += wc2.InsertedCount; bwr.MatchedCount += wc2.MatchedCount; bwr.UpsertsCount += wc2.Upserts.Count; } if ((request.Data.Respuestas.Count + request.Data.RespuestasGuias.Count) > 0 && ((bwr.UpsertsCount + bwr.MatchedCount) == (request.Data.Respuestas.Count + request.Data.RespuestasGuias.Count))) { descarga.Estado = "green"; Put(descarga); GetCollection <Diagnostico> ().FindAndModify(new FindAndModifyArgs { Query = Query <Diagnostico> .EQ(x => x.Id, descarga.IdDiagnostico), Update = Update <Diagnostico> .Inc(x => x.Revision, 1).Set(x => x.FechaRevision, DateTime.UtcNow) }); } return(CreateResult(descarga, bwr)); }