in Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/Binding/CosmosDBMongoBindingAsyncCollector.cs [68:95]
private async Task UpsertDocument(MongoCollectionReference reference, T doc, CancellationToken cancellationToken = default)
{
var database = reference.client.GetDatabase(reference.databaseName);
var collection = database.GetCollection<T>(reference.collectionName);
var idProperty = typeof(T).GetProperty("_id");
try
{
if (idProperty != null)
{
var idValue = idProperty.GetValue(doc);
var filter = Builders<T>.Filter.Eq("_id", idValue);
var update = Builders<T>.Update.Set("updatedAt", DateTime.UtcNow);
var options = new UpdateOptions { IsUpsert = true };
await collection.UpdateOneAsync(filter, update, options);
}
else
{
await collection.InsertOneAsync(doc, null, cancellationToken);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}