private void RunUpdateCommand(GridFSBucket bucket, BsonDocument command) { var collectionName = command["update"].AsString; var collection = bucket.Database.GetCollection <BsonDocument>(collectionName); var requests = new List <WriteModel <BsonDocument> >(); foreach (BsonDocument updateStatement in command["updates"].AsBsonArray) { var filter = updateStatement["q"].AsBsonDocument; var update = updateStatement["u"].AsBsonDocument; var upsert = updateStatement.GetValue("upsert", false).ToBoolean(); var multi = updateStatement.GetValue("multi", false).ToBoolean(); WriteModel <BsonDocument> request; if (multi) { request = new UpdateManyModel <BsonDocument>(filter, update) { IsUpsert = upsert }; } else { request = new UpdateOneModel <BsonDocument>(filter, update) { IsUpsert = upsert }; } requests.Add(request); } collection.BulkWrite(requests); }
public override async Task <BulkWriteResult <BsonDocument> > ApplyToField(IFieldDefinition field, IMongoCollection <BsonDocument> collection, CancellationToken?cancellationToken = null) { if (cancellationToken == null) { cancellationToken = CancellationToken.None; } var updateModels = new WriteModel <BsonDocument> [field.Extras.Extra.Count]; int iModel = 0; var dummies = field.Extras.Extra; foreach (var column in dummies) { var query = Builders <BsonDocument> .Filter.And( Builders <BsonDocument> .Filter.Eq(field.Name, column.Value) ); var updates = new List <UpdateDefinition <BsonDocument> >(); updates.Add(Builders <BsonDocument> .Update.Set(field.Name, column.Key)); var qrUpdateRoot = Builders <BsonDocument> .Update.Combine(updates); var actionModel = new UpdateManyModel <BsonDocument>(query, qrUpdateRoot); updateModels[iModel++] = actionModel; } var result = await collection.BulkWriteAsync(updateModels, new BulkWriteOptions() { }, cancellationToken.Value); return(result); }
public void BulkWrite_with_UpdateMany( [Values(false, true)] bool async) { var subject = CreateSubject(); var model = new UpdateManyModel <B>(_providedFilter, "{$set: {x: 1}}") { IsUpsert = true }; var options = new BulkWriteOptions(); if (async) { subject.BulkWriteAsync(new[] { model }, options, CancellationToken.None); _derivedCollection.Received().BulkWriteAsync( Arg.Is <IEnumerable <WriteModel <B> > >(v => v.OfType <UpdateManyModel <B> >() .Where(m => RenderFilter(m.Filter).Equals(_expectedFilter) && RenderUpdate(m.Update).Equals(BsonDocument.Parse("{$set: {x: 1}}")) && m.IsUpsert == model.IsUpsert).Count() == 1), options, CancellationToken.None); } else { subject.BulkWrite(new[] { model }, options, CancellationToken.None); _derivedCollection.Received().BulkWrite( Arg.Is <IEnumerable <WriteModel <B> > >(v => v.OfType <UpdateManyModel <B> >() .Where(m => RenderFilter(m.Filter).Equals(_expectedFilter) && RenderUpdate(m.Update).Equals(BsonDocument.Parse("{$set: {x: 1}}")) && m.IsUpsert == model.IsUpsert).Count() == 1), options, CancellationToken.None); } }
/// <summary> /// Update语法 /// </summary> public static void Update() { List <WriteModel <BsonDocument> > InputDBList = new List <WriteModel <BsonDocument> >(); IMongoCollection <BsonDocument> CompanyList_ITCode2_Input = Database.GetCollection <BsonDocument>("test"); var filter = Builders <BsonDocument> .Filter.Eq("ITCode2", "1"); var update = Builders <BsonDocument> .Update.Set("ENTRYDT", new BsonDateTime(DateTime.Now.AddHours(8))); var upsert = new UpdateManyModel <BsonDocument>(filter, update); upsert.IsUpsert = true; InputDBList.Add(upsert); CompanyList_ITCode2_Input.BulkWrite(InputDBList); }
public static void updata() { List <WriteModel <BsonDocument> > InputDBList = new List <WriteModel <BsonDocument> >(); IMongoDatabase Database = new MongoClient("mongodb://*****:*****@10.15.97.183:27017/DerivedData").GetDatabase("DerivedData"); IMongoCollection <BsonDocument> CompanyList_ITCode2_Input = Database.GetCollection <BsonDocument>("test"); var filter = Builders <BsonDocument> .Filter.Eq("ITCode2", "1"); var update = Builders <BsonDocument> .Update.Set("ENTRYDT", new BsonDateTime(DateTime.Now.AddHours(8))); var upsert = new UpdateManyModel <BsonDocument>(filter, update); upsert.IsUpsert = true; InputDBList.Add(upsert); CompanyList_ITCode2_Input.BulkWrite(InputDBList); }
public override void PersistSet(string key) { if (key == null) { throw new ArgumentNullException(nameof(key)); } var filter = CreateSetFilter(key); var update = new BsonDocument("$set", new BsonDocument(nameof(SetDto.ExpireAt), BsonNull.Value)); var writeModel = new UpdateManyModel <BsonDocument>(filter, update); _writeModels.Add(writeModel); }
// New methods to support Hangfire pro feature - batches. public override void ExpireSet(string key, TimeSpan expireIn) { if (key == null) { throw new ArgumentNullException(nameof(key)); } var filter = CreateSetFilter(key); var update = new BsonDocument("$set", new BsonDocument(nameof(SetDto.ExpireAt), DateTime.UtcNow.Add(expireIn))); var writeModel = new UpdateManyModel <BsonDocument>(filter, update); _writeModels.Add(writeModel); }
static void Main(string[] args) { Update(); Console.WriteLine("Hello World!"); List <WriteModel <BsonDocument> > InputDBList = new List <WriteModel <BsonDocument> >(); IMongoCollection <BsonDocument> hk_test = Database.GetCollection <BsonDocument>("test"); var projection = Builders <BsonDocument> .Projection.Include("ITCode2").Exclude("_id"); //var projection = Builders<BsonDocument>.Projection.Include("ID").Include("ITCode2").Include("TMSTAMP").Exclude("_id"); var filter1 = Builders <BsonDocument> .Filter.Ne("ID", 11); var result = Database.GetCollection <BsonDocument>("hk_test").Find("{}").Project(projection).ToList().ToJson(); var Fin_List = BsonSerializer.Deserialize <List <teststru> >(result).AsQueryable().ToList(); var Fin_List1 = BsonSerializer.Deserialize <List <string> >(result).AsQueryable().Distinct().ToList(); var rep = new ReplaceOneModel <BsonDocument>(filter1, new BsonDocument("ID", 14).Add("ITCode2", "ok").Add("TMSTAMP", "OK")); rep.IsUpsert = true; InputDBList.Add(rep); hk_test.BulkWrite(InputDBList); var filter = Builders <BsonDocument> .Filter.Eq("ID", 11); //var update = Builders<BsonDocument>.Update.Set("ITCode2", "OK2").Set("TMSTAMP", "OK2"); var update = Builders <BsonDocument> .Update.Set("ITCode2", new BsonDateTime(DateTime.Now)); Database.GetCollection <BsonDocument>("test").UpdateMany("{}", update); //Database.GetCollection<BsonDocument>("hk_test").UpdateMany(filter, update, new UpdateOptions { IsUpsert = true}); //var updateOptions = new UpdateOptions { IsUpsert = true }; //InputDBList.Add(new UpdateManyModel<BsonDocument>(filter, update)); var a = new UpdateManyModel <BsonDocument>(filter, update); a.IsUpsert = true; InputDBList.Add(a); hk_test.BulkWrite(InputDBList); //var projection = Builders<BsonDocument>.Projection.Include("ID").Include("ITCode2").Include("TMSTAMP").Exclude("_id"); //var result = Database.GetCollection<BsonDocument>("hk_test").Find(new BsonDocument()).Project(projection).ToList().ToJson(); ////var document2 = Database.GetCollection<BsonDocument>("TCR0002_V2").Find(new BsonDocument()).Project(projection).ToList().ToJson(); //var DataList = BsonSerializer.Deserialize<List<BsonDocument>>(result).AsQueryable().ToList(); }
public void BulkWrite_with_UpdateMany( [Values(false, true)] bool async) { var subject = CreateSubject(); var collation = new Collation("en_US"); var model = new UpdateManyModel <B>(_providedFilter, "{$set: {x: 1}}") { Collation = collation, Hint = new BsonDocument("_id", 1), IsUpsert = true }; var options = new BulkWriteOptions(); if (async) { subject.BulkWriteAsync(new[] { model }, options, CancellationToken.None); _mockDerivedCollection.Verify( c => c.BulkWriteAsync( It.Is <IEnumerable <WriteModel <B> > >(v => v.OfType <UpdateManyModel <B> >() .Where(m => RenderFilter(m.Filter).Equals(_expectedFilter) && RenderUpdate(m.Update).Equals(BsonDocument.Parse("{$set: {x: 1}}")) && m.Collation == model.Collation && m.Hint == model.Hint && m.IsUpsert == model.IsUpsert).Count() == 1), options, CancellationToken.None), Times.Once); } else { subject.BulkWrite(new[] { model }, options, CancellationToken.None); _mockDerivedCollection.Verify( c => c.BulkWrite( It.Is <IEnumerable <WriteModel <B> > >(v => v.OfType <UpdateManyModel <B> >() .Where(m => RenderFilter(m.Filter).Equals(_expectedFilter) && RenderUpdate(m.Update).Equals(BsonDocument.Parse("{$set: {x: 1}}")) && m.Collation == model.Collation && m.Hint == model.Hint && m.IsUpsert == model.IsUpsert).Count() == 1), options, CancellationToken.None), Times.Once); } }
public override void ExpireList(string key, TimeSpan expireIn) { if (key == null) { throw new ArgumentNullException(nameof(key)); } var filter = new BsonDocument("$and", new BsonArray { new BsonDocument(nameof(ListDto.Item), key), new BsonDocument("_t", nameof(ListDto)) }); var update = new BsonDocument("$set", new BsonDocument(nameof(ListDto.ExpireAt), DateTime.UtcNow.Add(expireIn))); var writeModel = new UpdateManyModel <BsonDocument>(filter, update); _writeModels.Add(writeModel); }
private bool TryParseUpdateManyModel(BsonDocument value, out WriteModel <BsonDocument> model) { FilterDefinition <BsonDocument> filter; UpdateDefinition <BsonDocument> update; List <ArrayFilterDefinition> arrayFilters; if (TryParseArguments(value, out filter, out update, out arrayFilters)) { model = new UpdateManyModel <BsonDocument>(filter, update) { ArrayFilters = arrayFilters }; return(true); } else { model = null; return(false); } }
public override void PersistList(string key) { if (key == null) { throw new ArgumentNullException(nameof(key)); } var filter = new BsonDocument("$and", new BsonArray { new BsonDocument(nameof(ListDto.Item), key), new BsonDocument("_t", nameof(ListDto)) }); var update = new BsonDocument("$set", new BsonDocument(nameof(ListDto.ExpireAt), BsonNull.Value)); var writeModel = new UpdateManyModel <BsonDocument>(filter, update); _writeModels.Add(writeModel); }
private Task RunUpdateCommandAsync(GridFSBucket bucket, BsonDocument command) { var collectionName = command["update"].AsString; var collection = bucket.Database.GetCollection<BsonDocument>(collectionName); var requests = new List<WriteModel<BsonDocument>>(); foreach (BsonDocument updateStatement in command["updates"].AsBsonArray) { var filter = updateStatement["q"].AsBsonDocument; var update = updateStatement["u"].AsBsonDocument; var upsert = updateStatement.GetValue("upsert", false).ToBoolean(); var multi = updateStatement.GetValue("multi", false).ToBoolean(); WriteModel<BsonDocument> request; if (multi) { request = new UpdateManyModel<BsonDocument>(filter, update) { IsUpsert = upsert }; } else { request = new UpdateOneModel<BsonDocument>(filter, update) { IsUpsert = upsert }; } requests.Add(request); } return collection.BulkWriteAsync(requests); }