Мой код указан ниже:
MyModel requestID = new MyModel
{
"id" = "123"
};
MyModel toUpdate = new MyModel
{
"is_cancelled" : true
};
FilterDefinition<MyModel> filter = requestID.ToBsonDocument();
UpdateDefinition<MyModel> update = toUpdate.ToBsonDocument();
collection.FindOneAndUpdate(filter, update);
Мой 1 документ в DocumentDB, например:
{
"id": "123",
"delnum": "100001"
}
Мое обновление:
{
"is_cancelled" : true
}
Мой ожидаемый документ после FindOneAndUpdate:
{
"id": "123",
"delnum": "100001",
"is_cancelled" : true
}
но что происходит, он заменяет мой документ с id = 123 ниже:
{
"is_cancelled" : true
}
Я хотел бы знать, правильно ли я это делаю, или каков мой ожидаемый результат, неверен.
Отредактированный код:
MyModel requestID = new MyModel
{
"id" = "123"
};
MyModel toUpdate = new MyModel
{
"is_cancelled" : true
};
var builder = Builders<MyModel>.Update;
UpdateDefinition<MyModel> update =null;
toUpdate.GetType().GetProperties().ToList().ForEach(
x => update = builder.Set(x.Name, x.GetValue(toUpdate, null))
FilterDefinition<MyModel> filter = requestID.ToBsonDocument();
if (update == null) return;
collection.FindOneAndUpdate(filter, update);