从驱动程序v1更新C#驱动程序v2中的文档

时间:2016-07-23 07:15:45

标签: mongodb mongodb-.net-driver

我的代码使用C#Mongo驱动程序版本1 for (int i = 0; i < arr.length-1; i++) { int leastGreater = ? //Don't know what to initialize with for (int j = i + 1; j < arr.length; j++) { if ((arr[j] > arr[i])) { if(arr[j]<leastGreater){ leastGreater = arr[j]; } } }

Repository

我将代码更改为C#驱动程序版本2

        /// <summary>
        ///  Generic update method to update record on the basis of id
        /// </summary>
        /// <param name="queryExpression"></param>
        /// <param name="id"></param>
        /// <param name="entity"></param>
        public void Update(Expression<Func<T, string>> queryExpression, string id, T entity)
        {
           var query = Query<T>.EQ(queryExpression, id);
           _collection.Update(query, Update<T>.Replace(entity)); 
        }

我使用( /// <summary> /// Generic update method to update record on the basis of id /// </summary> /// <param name="queryExpression"></param> /// <param name="id"></param> /// <param name="entity"></param> public void Update(Expression<Func<T, string>> queryExpression, string id, T entity) { // var query = Query<T>.EQ(queryExpression, id); //_collection.Update(query, Update<T>.Replace(entity)); var query = Builders<T>.Filter.Eq(queryExpression, id); var update = Builders<T>.Update.Set(queryExpression, id); _collection.UpdateOneAsync(query, update); ; } )打电话:

controller

我没有得到文档更新。你知道我的迁移代码有什么问题。

由于

1 个答案:

答案 0 :(得分:1)

您调用的异步方法没有await _collection.UpdateOneAsync(query, update);,这不是问题的根本原因,但在这种情况下您没有正确的异常处理。
await或使用相应的同步版本UpdateOne

您可能还希望使用ReplaceOne作为初始版本,V1驱动程序也会替换整个文档。以下内容应符合您的需求(尽管未经过测试)

...
var query = Builders<T>.Filter.Eq(queryExpression, id);
_collection.ReplaceOne(query, entity);
...