Mongodb C#驱动程序在数组为空时更新所有子数组元素失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb C#驱动程序在数组为空时更新所有子数组元素失败相关的知识,希望对你有一定的参考价值。
链接到this post,我尝试并能够更新文档的所有子数组元素。总结一下,我想在C#中使用$[]运算符>
这是我的存储库中的更新请求:
var date = DateTime.UtcNow; update = update.Set(x => x.LastUpdateDate, date); update = update.Set(x => x.EndDate, date); update = update.Set("Quotes.$[].DraftStatus", Constants.ProjectCloseStatus); var res = _mongoCollection.UpdateMany(filter, update);
“ Quotes”数组不为空时,它工作得很好。不幸的是,当数组不存在时,我在数据库中得到以下输出:
"_id" : ObjectId("5df73ac41043a04ee0873253"), "Quotes" : "$[]" : "DraftStatus" : "CLOSE"
并且由于解析,读取操作失败。进行更新时,我遇到以下问题:
写操作导致错误。 “报价”路径必须存在在文档中以应用数组更新。
链接到此文章,我尝试过并且能够更新文档的所有子数组元素。总结一下,我想在C#中使用$ []运算符这是我的存储库中的更新请求:var date = ...
答案
就像错误消息说的那样,只允许您在作为数组的字段上运行数组更新操作。如果该字段的值为null
或不存在,则更新将失败。
以上是关于Mongodb C#驱动程序在数组为空时更新所有子数组元素失败的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 驱动程序更新 MongoDB 数组中的子文档