private void UpdateDocument(MongoContext mongoContext, ResourceChange change)
{
if (!change.ModifiedProperties.Any())
return;
var collection = mongoContext.Database.GetCollection(change.CollectionName);
var query = Query.EQ(MongoMetadata.ProviderObjectIdName, ObjectId.Parse(change.Resource.GetValue(MongoMetadata.MappedObjectIdName).ToString()));
UpdateBuilder update = null;
foreach (var resourceProperty in change.ModifiedProperties)
{
if (update == null)
{
if (resourceProperty.Value != null)
update = Update.Set(resourceProperty.Key, BsonValue.Create(resourceProperty.Value));
else
update = Update.Unset(resourceProperty.Key);
}
else
{
if (resourceProperty.Value != null)
update = update.Set(resourceProperty.Key, BsonValue.Create(resourceProperty.Value));
else
update = update.Unset(resourceProperty.Key);
}
}
collection.Update(query, update);
}