c# - 使用 MongoDB C# 驱动程序 2.0 添加元素或添加到数组

标签 c# arrays mongodb mongodb-.net-driver mongodb-csharp-2.0

我有一个文档,上面可以有一个“收藏夹”元素,我正在尝试将一个新值插入该元素的数组中。但是,我收到错误,因为我尝试更新的文档没有“收藏夹”元素。如果元素不存在,如何创建该元素以便将新值插入其数组属性中?我可以一次手术完成吗?这就是我正在做的事情,但出现错误无法使用部分(Favorites of favorites.ProgramIds)来遍历元素({Favorites: null})

var filter = Builders<UserEntity>.Filter.Eq(u => u.Id, userId);
var update = isFavorite ? Builders<UserEntity>.Update.AddToSet(u => u.Favorites.ProgramIds, id)
    : Builders<UserEntity>.Update.Pull(u => u.Favorites.ProgramIds, id);
await collection.UpdateOneAsync(filter, update);

最佳答案

如果想忽略重复项,可以使用 $addToSet ,它将创建或追加到数组中,将其视为一个集合。如果你只是想让它成为一个普通的普通数组,那么使用 $push 。如果您明确使用 $push 并收到错误,那么您不应该这样做,这是一个单独的问题;请参阅官方文档:“如果要更新的文档中缺少该字段,$push 将添加数组字段,并将该值作为其元素。”

关于c# - 使用 MongoDB C# 驱动程序 2.0 添加元素或添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901076/

相关文章:

c# - 如何在列表中搜索距离小于 F 到 P 的项目而不搜索整个列表?

c# - 使用 mysql c# 中的数据列表填充组合框

javascript - 如何将两个带有索引 en 点的字符串放入 Three.js BufferGeometry 中?

JavaScript:无法设置未定义的属性

node.js - 使用 Mongoose 批量更新

node.js - 无法使用 Node/Express/Mongodb 读取 null 的属性 'find'

c# - Web 服务仅适用于根文件夹

c# - 在非生产环境中测试生产配置文件

c++ - 对于二维矩阵,它在 C++11 中是否与 C11 中的函数类似?

mongodb - 使用文档中存储的值查询 $near