c# - 如何使用 mongodb c# 驱动程序更新除 ID 之外的整个文档
问题描述
目前我正在更新整个文档,但如果 ID 更改,我会收到错误消息:
MongoDB.Driver.MongoWriteException:'写入操作导致错误。应用更新后,发现(不可变)字段 '_id' 已更改为 _id:BinData(3, B3FD0EE0FF161845BE96BE40A7DDE84B)'
所以我希望它在更新文档时忽略 ID 字段。
这就是我现在正在做的事情:
public async Task<bool> UpdateMatch(Guid id, Match match)
{
ReplaceOneResult actionResult
= await _context.Match.ReplaceOneAsync(m => m.Id.Equals(id),
match,
new UpdateOptions { IsUpsert = true });
return actionResult.IsAcknowledged && actionResult.ModifiedCount > 0;
}
在此先感谢您的帮助!
解决方案
将“BsonIgnoreIfDefault”属性添加到 InternalId 属性。
public class Document
{
[BsonId]
[BsonIgnoreIfDefault]
public ObjectId InternalId { get; set; }
// rest of document
}
推荐阅读
- python - 从heroku下载临时文件
- nginx - Rancher 2 禁用 HTTP 到 HTTPS 重定向
- reactjs - React-Leaflet 显示 TS2769:没有重载匹配此调用。类型错误
- c++ - 正确使用抽象工厂C++
- flutter - 在小部件中获取时间选择器的值
- php - 如何使用 php 连接到谷歌云 SQL 实例?
- go - 复杂结构的实例化
- sql - Postgresql:仅在提供新值时才进行冲突更新
- sql-server - 为什么绑定到特定存储过程的子表单无法加载?
- command-line - 使用 parquet-tools 打开 parquet 文件时出错