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数组中的子文档

如何使用 C# 驱动程序更新 MongoDB 数组中的子文档

EXCEL 某单元格不为空时,提取该单元格所在行所有数据到另一个工作表

带有寻呼机的表排序器 - 表为空时强制更新

当 mongodb 集合为空时,响应式可尾游标关闭