public void TestBsonListClear() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; role.ListInt.Add(10); role.ListInt.Add(11); role.ListInt.Add(12); role.ClearDirty(); collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.ListInt.Clear(); role.Update(context); var bsonUpdate = context.Build(); Assert.AreEqual(BsonDocument.Parse("{'$unset': {'ListInt': 1}}"), bsonUpdate); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, context.Build()); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(0, roleActual.ListInt.Count); }
public void TestBsonDictSetNull() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.Friends.Add(11, null); role.Update(context); var bsonUpdate = context.Build(); Assert.AreEqual(BsonDocument.Parse("{$set:{'Friends.11': null}}"), bsonUpdate); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, bsonUpdate); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(null, roleActual.Friends[11]); }
public void TestBsonDictRemove() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; role.Texts[11] = "abc"; role.ClearDirty(); collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.Texts.Remove(11); role.Update(context); var bsonUpdate = context.Build(); Assert.AreEqual(BsonDocument.Parse("{$unset:{'Texts': 1}}"), bsonUpdate); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, bsonUpdate); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(0, roleActual.Texts.Count); }
public void TestBsonListAddNull() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.ListFriend.Add(null); role.Update(context); var bsonUpdate = context.Build(); Assert.AreEqual(BsonDocument.Parse("{$set:{'ListFriend.1': {'PrevKey':0, 'Value':null}}}"), bsonUpdate); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, bsonUpdate); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(null, roleActual.ListFriend[0]); }
public void TestBsonList_IndexSet() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; role.ListInt.Add(10); role.ListInt.Add(11); role.ListInt.Add(12); role.ClearDirty(); collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.ListInt[1] = 21; role.Update(context); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, context.Build()); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(10, roleActual.ListInt[0]); Assert.AreEqual(21, roleActual.ListInt[1]); Assert.AreEqual(12, roleActual.ListInt[2]); }
public void TestBsonList_RemoveAt_Middle() { var collection = GetTestCollection <BsonDocument>(); Role role = new Role { RoleID = 1 }; role.ListInt.Add(10); role.ListInt.Add(11); role.ListInt.Add(12); role.ClearDirty(); collection.InsertOne((BsonDocument)role); UpdateContext context = new UpdateContext(); role.ListInt.RemoveAt(1); role.Update(context); var bsonUpdate = context.Build(); Assert.AreEqual(new BsonDocument { { "$set", new BsonDocument { { "ListInt.3.PrevKey", 1 } } }, { "$unset", new BsonDocument { { "ListInt.2", 1 } } } }, bsonUpdate); collection.UpdateOne(new BsonDocument { { "_id", 1 } }, context.Build()); var actual = collection.Find(new BsonDocument()).First(); var roleActual = (Role)actual; Assert.AreEqual(10, roleActual.ListInt[0]); Assert.AreEqual(12, roleActual.ListInt[1]); }
public void SetProperty() { Role role = CreateRole(); role.RoleName = "test"; role.Update(context); Assert.AreEqual(BsonDocument.Parse("{$set:{'RoleName':'test'}}"), context.Build()); role.ClearDirty(); context.Clear(); role.RoleName = null; role.Update(context); Assert.AreEqual(BsonDocument.Parse("{$unset:{'RoleName':1}}"), context.Build()); }
public void TestUpdateVsReplace() { var collection = GetTestCollection <BsonDocument>(); BulkWriteContext context = new BulkWriteContext(); Dictionary <long, Role> Roles = new Dictionary <long, Role>(); for (int i = 0; i < 100; i++) { var role = new Role { RoleID = i, RoleName = i.ToString() }; for (int itemIndex = 0; itemIndex < 50; itemIndex++) { role.Items.Add(itemIndex, new Item { ItemID = itemIndex, ItemUID = itemIndex }); } role.ClearDirty(); Roles.Add(i, role); context.Insert((BsonDocument)role); } context.Execute(collection); context.Clear(); Stopwatch watch = new Stopwatch(); List <ReplaceOneModel <BsonDocument> > replaces = new List <ReplaceOneModel <BsonDocument> >(); watch.Start(); foreach (var pair in Roles) { replaces.Add(new ReplaceOneModel <BsonDocument>(new BsonDocument { { "_id", pair.Key } }, (BsonDocument)pair.Value)); } collection.BulkWrite(replaces); watch.Stop(); var time1 = watch.ElapsedMilliseconds; watch.Reset(); for (int i = 0; i < 100; i++) { Roles[i].RoleName += i; for (int itemIndex = 0; itemIndex < 10; itemIndex++) { Roles[i].Items[itemIndex].ItemID += 1; } Roles[i].Items.Add(51, new Item { ItemID = 51, ItemUID = 51 }); } UpdateContext update = new UpdateContext(); watch.Start(); foreach (var pair in Roles) { update.Clear(); pair.Value.Update(update); context.Update(new BsonDocument { { "_id", pair.Key } }, update.Build()); } context.Execute(collection); context.Clear(); watch.Stop(); var time2 = watch.ElapsedMilliseconds; Assert.IsTrue(time1 > time2); }
public void TestBulkWriteRoles() { var collection = GetTestCollection <BsonDocument>(); Dictionary <long, Role> Roles = new Dictionary <long, Role>(); for (int i = 0; i < 100; i++) { var role = new Role { RoleID = i, RoleName = i.ToString(), Inserted = true }; for (int itemIndex = 0; itemIndex < 50; itemIndex++) { role.Items.Add(itemIndex, new Item { ItemID = itemIndex, ItemUID = itemIndex }); } Roles.Add(i, role); } UpdateContext update = new UpdateContext(); BulkWriteContext context = new BulkWriteContext(); foreach (var pair in Roles) { if (pair.Value.Inserted) { context.Insert((BsonDocument)pair.Value); } else { update.Clear(); pair.Value.Update(update); context.Update(new BsonDocument { { "_id", pair.Key } }, update.Build()); } pair.Value.ClearDirty(); pair.Value.Inserted = false; } context.Execute(collection); update.Clear(); context.Clear(); for (int i = 0; i < 100; i++) { Roles[i].RoleName += i; Roles[i].Items.Add(51, new Item { ItemID = 51, ItemUID = 51 }); } Roles.Add(100, new Role { RoleID = 100, Inserted = true }); foreach (var pair in Roles) { if (pair.Value.Inserted) { context.Insert((BsonDocument)pair.Value); } else { update.Clear(); pair.Value.Update(update); context.Update(new BsonDocument { { "_id", pair.Key } }, update.Build()); } pair.Value.ClearDirty(); pair.Value.Inserted = false; } context.Execute(collection); update.Clear(); context.Clear(); }