我有一个文档,上面可以有一个“收藏夹”元素,我正在尝试将一个新值插入该元素的数组中。但是,我收到错误,因为我尝试更新的文档没有“收藏夹”元素。如果元素不存在,如何创建该元素以便将新值插入其数组属性中?我可以一次手术完成吗?这就是我正在做的事情,但出现错误无法使用部分(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/