/// <summary> /// Adds an update request to update one matching document to the bulk operation. /// </summary> /// <param name="update">The update.</param> public void UpdateOne(IMongoUpdate update) { if (update == null) { throw new ArgumentNullException("update"); } Update(update.ToBsonDocument(), false); }
public override WriteConcernResult Update(IMongoQuery query, IMongoUpdate update, MongoUpdateOptions options) { var sw = new Stopwatch(); sw.Start(); var result = base.Update(query, update, options); sw.Stop(); var commandStringBuilder = new StringBuilder(1024); commandStringBuilder.AppendFormat("db.{0}.update(query, update", Name); var optionsList = new List <string>(); if ((options.Flags & UpdateFlags.Upsert) == UpdateFlags.Upsert) { optionsList.Add("upsert: true"); } if ((options.Flags & UpdateFlags.Multi) == UpdateFlags.Multi) { optionsList.Add("multi: true"); } if (optionsList.Any()) { commandStringBuilder.AppendFormat("{{ {0} }}", string.Join(", ", optionsList)); } commandStringBuilder.Append(")"); if (query != null) { commandStringBuilder.AppendFormat("\nquery = {0}", query.ToBsonDocument()); } else { commandStringBuilder.Append("\nquery = {}"); } if (update != null) { commandStringBuilder.AppendFormat("\nupdate = {0}", update.ToBsonDocument()); } else { commandStringBuilder.Append("\nupdate = {}"); } string commandString = commandStringBuilder.ToString(); ProfilerUtils.AddMongoTiming(commandString, sw.ElapsedMilliseconds, ExecuteType.Update); return(result); }
public void UpdateTest() { IMongoQuery query = null; IMongoUpdate update = null; collection.Setup(c => c.Update(It.IsAny <IMongoQuery>(), It.IsAny <IMongoUpdate>())) .Callback <IMongoQuery, IMongoUpdate>((q, u) => { query = q; update = u; }).Returns(() => { return(new MongoMockResult()); }); var entity = new NamedEntity { name = "First" }; repository.Create(entity); var updateEntity = new NamedEntity { name = "Second" }; repository.Update(entity.id, updateEntity); Assert.IsNotNull(query); Assert.IsNotNull(update); Assert.AreEqual(entity.id, query.ToBsonDocument()["_id"].ToString()); var document = update.ToBsonDocument(); Assert.IsNotNull(document["$set"]["updated_at"]); Assert.AreEqual(updateEntity.name, document["$set"]["name"].AsString); Assert.AreEqual(2, document["$set"].AsBsonDocument.ElementCount); }
private FindAndModifyResult FindAndModifyImpl(IMongoQuery query, IMongoSortBy sortBy, bool remove, IMongoUpdate update, bool returnNew, IMongoFields fields, bool upsert) { var sw = new Stopwatch(); sw.Start(); var result = base.FindAndModify(query, sortBy, update, fields, returnNew, upsert); sw.Stop(); var commandStringBuilder = new StringBuilder(1024); commandStringBuilder.AppendFormat("db.{0}.findAndModify(query, sort, remove, update, new, fields, upsert)", Name); if (query != null) { commandStringBuilder.AppendFormat("\nquery = {0}", query.ToBsonDocument()); } else { commandStringBuilder.Append("\nquery = null"); } if (sortBy != null) { commandStringBuilder.AppendFormat("\nsort = {0}", sortBy.ToBsonDocument()); } else { commandStringBuilder.Append("\nsort = null"); } commandStringBuilder.AppendFormat("\nremove = {0}", remove ? "true" : "false"); if (update != null) { commandStringBuilder.AppendFormat("\nupdate = {0}", update.ToBsonDocument()); } else { commandStringBuilder.Append("\nupdate = null"); } commandStringBuilder.AppendFormat("\nnew = {0}", returnNew ? "true" : "false"); if (fields != null) { commandStringBuilder.AppendFormat("\nfields = {0}", fields.ToBsonDocument()); } else { commandStringBuilder.Append("\nfields = null"); } commandStringBuilder.AppendFormat("\nupsert = {0}", upsert ? "true" : "false"); string commandString = commandStringBuilder.ToString(); ProfilerUtils.AddMongoTiming(commandString, sw.ElapsedMilliseconds, ExecuteType.Update); return(result); }